It is possible you are running into an Android bug. Calling
setContentView() repeatedly is certainly supported, but AFAIK it's a
bit off the mainstream, and so there may be lingering issues.

If your goal is simply something that works, consider using a
ViewAnimator (e.g., ViewSwitcher) as a container, or simply change the
visibility of various components.

Beyond that, I would recommend you package up a full project (not just
this class file) and log this as an issue on http://b.android.com.
Supplying a full project will make it incrementally easier for
somebody to give your code a whirl and make it incrementally more
likely that you'll get useful feedback.

On Sun, Oct 10, 2010 at 6:36 PM, John Gaby <jg...@gabysoft.com> wrote:
> I have a put together a very simple program which exhibits this
> behavior.  Run the following program and then do the following
>
> 1) Click in the edit control of the first page which should bring up
> the soft keyboard
> 2) Using the soft keyboard type 'aaa'
> 3) Click the 'Press This' button
> 4) The view switches to the next page
> 5) Click in the edit control of this new page and using the soft
> keyboard type 'bbb'
> 6) Click the 'Press This' button
> 7) You should now see the first page with the edit control which still
> has the 'aaa' text in it.
> 8) Click in that edit control and enter 'ccc' via the soft keyboard.
> 9) Note that nothing appears to happen (except you get some
> MediaPlayer errors in LogCat???)
> 10) Click the "Press This' button which switches back to the second
> page.
> 11) Note that the 'ccc' you typed is in this edit control
>
> Clearly, even though the second page is no longer visible, it somehow
> still has the focus.  I have tried using the 'requestFocus' function
> to set the focus into both the EditText control and the LinearLayout
> view of the currently visible view, but this does not seem to have any
> effect.  Can someone please tell me how to make this work?
>
> Thanks
>
>
> package com.gabysoft.testandroid;
>
> import android.app.Activity;
> import android.os.Bundle;
> import android.view.View;
> import android.view.View.OnClickListener;
> import android.widget.Button;
> import android.widget.EditText;
> import android.widget.LinearLayout;
> import android.widget.LinearLayout.LayoutParams;
>
> public class TestAndroid extends Activity implements OnClickListener {
>    /** Called when the activity is first created. */
>    LinearLayout     ll1;
>    LinearLayout    ll2;
>    boolean one = true;
>
>    LinearLayout CreatePage()
>    {
>        LinearLayout ll;
>        EditText et;
>
>        ll = new LinearLayout(this);
>        et = new EditText(this);
>        LayoutParams lp = new LinearLayout.LayoutParams(100, 50);
>        et.setLayoutParams(lp);
>        Button btn = new Button(this);
>        btn.setText("Press This");
>        btn.setOnClickListener(this);
>
>        ll.addView(et);
>        ll.addView(btn);
>
>        return(ll);
>    }
>
>   �...@override
>    public void onCreate(Bundle savedInstanceState) {
>        super.onCreate(savedInstanceState);
>
>        ll1 = CreatePage();
>        ll2 = CreatePage();
>
>        setContentView(ll1);
>    }
>
>   �...@override
>    public void onClick(View arg0)
>    {
>        if (one)
>        {
>            setContentView(ll2);
>        }
>        else
>        {
>            setContentView(ll1);
>        }
>
>        one    = !one;
>    }
> }
>
> On Oct 9, 10:35 am, John Gaby <jg...@gabysoft.com> wrote:
>> I have an app where the user is entering some data via an EditText
>> control.  This is done by alternating between 2 pages each of which
>> obtains one piece of data.  When I start, I create the first page and
>> make it active by calling the setContentView for the activity. I also
>> set the focus into the EditText control on this page.  When I do that,
>> I am able to bring up the soft keyboard and type text into the
>> control.
>>
>> I then press a 'Next' button, which brings up the second page.  I
>> create this page which has another EditText control, and make it
>> active by calling the setContentView.  Once again, this works
>> correctly, and I am able to enter text into the control.
>>
>> When I press the 'Next' button again, the first page is then make
>> active again (I am reusing the origonal page, and do not recreate
>> it).  However, when I do this, I can no longer type text with the soft
>> keyboard and have it go into the EditText control.  The control shows
>> a blinking cursor as if it has focus, but if I type on the soft
>> keyboard, nothing happens, except I get the following errors in
>> LogCat:
>>
>> 10-09 17:28:52.722: ERROR/MediaPlayerService(30):   error: -2
>> 10-09 17:28:52.722: ERROR/MediaPlayer(52): Unable to to create media
>> player
>> 10-09 17:28:52.722: WARN/AudioService(52): MediaPlayer IOException:
>> java.io.IOException: setDataSource failed.: status=0x80000000
>>
>> Note that if I don't bring up the soft keyboard and use the hardware
>> keyboard instead, everything seems to work correctly.
>>
>> Obviously, I am doing something wrong here, but I cannot figure out
>> what. Can anyone give me a clue as what is happening here?
>>
>> Thanks.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>



-- 
Mark Murphy (a Commons Guy)
http://commonsware.com | http://github.com/commonsguy
http://commonsware.com/blog | http://twitter.com/commonsguy

_Android Programming Tutorials_ Version 3.0.1 Available!

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to