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