We have the same results but different analysis. Same results - my app goes back to ActivityB and your app goes back to ActivityA.
Different analysis - I do NOT think the click listener definition makes any difference (just a difference in style but functionally the same). What I DID notice is that when I use my AndroidManifest that your app and my app behave the same. Haven't figured out why that is so yet. On Feb 19, 12:09 pm, Mark Wyszomierski <[email protected]> wrote: > Ok so yours work, and I see the change that causes my version to lose > its history: > > // Yours - works: > private OnClickListener gotoBClickListener = new > GotoBClickListener(); > public void onCreate(Bundle savedInstanceState) { > button.setOnClickListener(gotoBClickListener); > > } > > // Mine - does not work: > public void onCreate(Bundle savedInstanceState) { > button.setOnClickListener(new OnClickListener() { > public void onClick(View arg0) { > Intent intent = new Intent(); > intent.setClass(ActivityA.this, ActivityB.class); > startActivity(intent); > } > }); > > } > > but I don't understand why this should make my history stack get wiped > out, depending on when the click handler was defined which launches > the intent? > > Thanks > > On Feb 19, 11:35 am, Mark Wyszomierski <[email protected]> wrote: > > > Thanks for posting, I'll make a new project with your code to test. > > Although my G1 is running 1.5, my emulator is using 2.0, so it should > > be testing both situations. Will try yours now, > > > Thanks > > > On Feb 19, 11:21 am, jotobjects <[email protected]> wrote: > > > > Yes in the last step I get back to ActivityB and you get back to > > > ActivityA so that's different behavior. The only environment > > > difference apparently is that your test is with 1.5 and my test is > > > with 2.0.1, but it doesn't seem like this core behavior would have > > > changed. Here is my app. I'll test your app also. > > > > <?xml version="1.0" encoding="utf-8"?> > > > <manifest xmlns:android="http://schemas.android.com/apk/res/android" > > > package="foo.singletask" > > > android:versionCode="1" > > > android:versionName="1.0"> > > > <uses-sdk android:minSdkVersion="3" /> > > > <application android:label="SimpleSingleTask"> > > > <activity android:name=".ActivityA" > > > launchMode="singleTask"> > > > <intent-filter> > > > <action android:name="android.intent.action.MAIN" /> > > > <category > > > android:name="android.intent.category.LAUNCHER" /> > > > </intent-filter> > > > </activity> > > > <activity android:name=".ActivityB"/> > > > </application> > > > </manifest> > > > > - - - - ActivityA.java - - - - > > > package foo.singletask; > > > > import android.app.Activity; > > > import android.content.ComponentName; > > > import android.content.Intent; > > > import android.os.Bundle; > > > import android.view.View; > > > import android.view.View.OnClickListener; > > > import android.widget.Button; > > > > public class ActivityA extends Activity > > > { > > > private OnClickListener gotoBClickListener = new > > > GotoBClickListener(); > > > private Intent gotoBIntent; > > > > @Override > > > public void onCreate(Bundle savedInstanceState) { > > > super.onCreate(savedInstanceState); > > > setContentView(R.layout.viewa); > > > Button button = (Button)findViewById(R.id.gotoB); > > > button.setOnClickListener(gotoBClickListener); > > > gotoBIntent = new Intent().setComponent( > > > new ComponentName(this, ActivityB.class)); > > > } > > > > private class GotoBClickListener implements OnClickListener { > > > @Override > > > public void onClick(View v) { > > > startActivity(gotoBIntent); > > > } > > > } > > > > } > > > > - - - - ActivityB.java - - - - > > > package foo.singletask; > > > > import android.app.Activity; > > > import android.os.Bundle; > > > > public class ActivityB extends Activity > > > { > > > @Override > > > public void onCreate(Bundle savedInstanceState) { > > > super.onCreate(savedInstanceState); > > > setContentView(R.layout.viewb); > > > } > > > > } > > > > - - - - res/layout/viewa.xml - - - > > > <?xml version="1.0" encoding="utf-8"?> > > > <Button xmlns:android="http://schemas.android.com/apk/res/android" > > > android:id="@+id/gotoB" > > > android:layout_width="wrap_content" > > > android:layout_height="wrap_content" > > > android:textColor="#FF0000" > > > android:text="This is A - Go to B"/> > > > > - - - - res/layout/viewb.xml - - - > > > <?xml version="1.0" encoding="utf-8"?> > > > <TextView xmlns:android="http://schemas.android.com/apk/res/android" > > > android:layout_width="fill_parent" > > > android:layout_height="fill_parent" > > > android:textColor="#FF0000" > > > android:text="hello from Activity B"/> > > > > On Feb 19, 6:36 am, Mark Wyszomierski <[email protected]> wrote: > > > > > Hi jotobjects, > > > > > Yes I am running it as you described, here it is exactly: > > > > > -Run emulator (same on g1 running 1.5) > > > > -Make sure all instances of app are killed (not running from eclipse) > > > > -Start app from app tray, ActivityA is created > > > > -ActivityA launched ActivityB via button click > > > > -Home button > > > > -Open app tray, click app icon > > > > -ActivityA is shown instead of ActivityB > > > > > are you sure you're getting different behavior? If so, it would be > > > > awesome if you could post your sample, this is definitely not desired > > > > behavior! > > > > > Thanks > > > > > On Feb 18, 1:57 pm, jotobjects <[email protected]> wrote: > > > > > > On quick inspection your app looks almost like the one I tested. My > > > > > test is with the emulator with Android 2.0.1. I am NOT running this > > > > > from eclipse. Any difference from your scenario? > > > > > > What do you mean by "resume" in your scenario? Do you mean pulling > > > > > down the tray and clicking on the App icon again? > > > > > > On Feb 18, 12:53 pm, Mark Wyszomierski <[email protected]> wrote: > > > > > > > Hi jotobjects, that would be really helpful if you could post your > > > > > > example. My simple example is below. Behavior I am seeing is: > > > > > > > -App Tray > > > > > > -ActivityA > > > > > > -btn click, start ActivityB > > > > > > -home button > > > > > > -resume > > > > > > -ActivityA is shown > > > > > > > import android.app.Activity; > > > > > > import android.content.Intent; > > > > > > import android.os.Bundle; > > > > > > import android.view.View; > > > > > > import android.view.View.OnClickListener; > > > > > > import android.widget.Button; > > > > > > > public class ActivityA extends Activity { > > > > > > @Override > > > > > > public void onCreate(Bundle savedInstanceState) { > > > > > > super.onCreate(savedInstanceState); > > > > > > setContentView(R.layout.activitya); > > > > > > > Button btn = (Button)findViewById(R.id.btn); > > > > > > btn.setOnClickListener(new OnClickListener() { > > > > > > public void onClick(View arg0) { > > > > > > Intent intent = new Intent(); > > > > > > intent.setClass(ActivityA.this, ActivityB.class); > > > > > > startActivity(intent); > > > > > > } > > > > > > }); > > > > > > } > > > > > > > } > > > > > > > import android.app.Activity; > > > > > > import android.os.Bundle; > > > > > > > public class ActivityB extends Activity { > > > > > > @Override > > > > > > public void onCreate(Bundle savedInstanceState) { > > > > > > super.onCreate(savedInstanceState); > > > > > > setContentView(R.layout.activityb); > > > > > > } > > > > > > > } > > > > > > > <activity android:name=".ActivityA" > > > > > > android:label="@string/app_name" > > > > > > android:launchMode="singleTask"> > > > > > > <intent-filter> > > > > > > <action android:name="android.intent.action.MAIN" /> > > > > > > <category android:name="android.intent.category.LAUNCHER" /> > > > > > > </intent-filter> > > > > > > </activity> > > > > > > > <activity android:name=".ActivityB" > > > > > > android:label="@string/app_name"> > > > > > > <intent-filter> > > > > > > <action android:name="android.intent.action.VIEW" /> > > > > > > <category android:name="android.intent.category.DEFAULT" /> > > > > > > </intent-filter> > > > > > > </activity> > > > > > > > Thanks > > > > > > > On Feb 18, 10:18 am, jotobjects <[email protected]> wrote: > > > > > > > > Just curious since you and others have asked similar questions in > > > > > > > the > > > > > > > past. I just wrote a simple App with ActivityA and ActivityB > > > > > > > where A > > > > > > > issingleTasklaunchMode. If I go A->b->Home->relaunch I get gack > > > > > > > to > > > > > > > B. So I cannot replicate the scenario you describe. The code > > > > > > > and all > > > > > > > files for the app are just a couple of dozen lines so I can post > > > > > > > if > > > > > > > here if that would be helpful to figure out what you are doing > > > > > > > differently than my test. > > > > > > > > On Feb 18, 7:09 am, Mark Wyszomierski <[email protected]> wrote: > > > > > > > > > Hi, > > > > > > > > > I have an activity, ActivityA, and its launchMode is set to > > > > > > > > "singleTask". > > > > > > > > > I start the application from the app tray. ActivityA launches > > > > > > > > ActivityB from a button click. ActivityB is a normal activity > > > > > > > > with no > > > > > > > > launchMode set ("standard"). > > > > > > > > > With ActivityB on top of the activity stack, I hit the home > > > > > > > > button, > > > > > > > > then resume the app, I see ActivityA instead of ActivityB when > > > > > > > > resumed. > > > > > > > > > Shouldn't the history stack be preserved in this case, and B be > > > > > > > > showing? When I resume, I see A get onNewIntent() called, and > > > > > > > > I'm not > > > > > > > > sure why this is happening. I thought the stack would be > > > > > > > > preserved. > > > > > > > > > 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

