That definitely smells like a bug. Glad you have a workaround, though. On Sun, Oct 10, 2010 at 8:36 PM, John Gaby <[email protected]> wrote: > I decided to try using a ViewAnimator, and I discovered that it works, > unless I remove the current view before displaying the new one. If I > do that, then it behaves the same way as before. This got me to > thinking that there must be something I can do to make it work even if > I remove the old view first. After some experimenting I discovered > that if I set the visibility of the view that I am removing to > INVISIBLE before I remove it, then it works fine. This is true even > if I use the setContentView function to set the current view, as I > originally had it. > > Thanks much for your help! > > On Oct 10, 4:20 pm, Mark Murphy <[email protected]> wrote: >> 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 onhttp://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 <[email protected]> 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 <[email protected]> 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 [email protected] >> > To unsubscribe from this group, send email to >> > [email protected] >> > 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/commonsguyhttp://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 [email protected] > To unsubscribe from this group, send email to > [email protected] > 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 Training in London: http://skillsmatter.com/go/os-mobile-server -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

