Thank you very much, Dianne Hackborn! That helped. Still seems like a bug though, doesn't it? Maybe a fixed one at that since it seems to work in 2.2.
On 11 Jan, 18:33, Dianne Hackborn <[email protected]> wrote: > This is because all activities in an .apk are given the same task affinity > by default, so they will try to stay together on the same stack. You can > use android:taskAffinity on an activity to change this. Use "" if you don't > want a task affinity for an activity (probably what you want for the > dialog). > > There is some description of this > here:http://developer.android.com/guide/topics/fundamentals.html#afftask > > > > On Tue, Jan 11, 2011 at 4:52 AM, Schoel <[email protected]> wrote: > > Hello, > > > I have found some weird behaviour which might be a bug. I found it > > while developing a quite large application but I've been able to > > reproduce the behaviour in a minimal approach so that I can provide > > source code. > > > I have a service that is constantly running and at certain times it > > pops up an activity with Theme.Dialog as theme for the user. > > Everything works fine if the main activity of the program has been > > destroyed (via back button) or if the main activity is currently > > running. > > > However, if the main activity of the app has been created and then > > minimized (e.g. via Home button), the main activity shows up. It is > > not possible to click the buttons of the main activity because it > > seems to be hidden behind an invisible dialog activity. It is possible > > to click the buttons of the dialog if you know where they are and if > > you click the back button, you can see the dialog flashing by as it > > disappears and it is then possible to click the main activity buttons. > > > I've tested this on HTC Desire 2.2, HTC Wildfire 2.1, HTC Legend 2.1, > > Sony x10 mini pro 2.1 and on emulators 2.1 and 2.2. The behaviour > > described happens on all 2.1 devices and emulator but not on emulator > > 2.2 nor on the Desire with 2.2. > > > Source code is provided below. There are 2 buttons in the main > > activity, the first, called "Finish" asks the service to popup the > > dialog in 3 seconds and then finishes the main activity. This button > > is for illustrative purposes only, it works fine. The second button, > > called "Post later" just asks the service to popup the dialog in 3 > > seconds. If the second button is clicked and before the 3 seconds have > > passed, the home button is clicked, the bug appears. > > > Source code: > > Main.java: > > -------------------------------------------------------------- > > package com.myapp.DialogBugTest; > > > import android.app.Activity; > > import android.content.Intent; > > import android.os.Bundle; > > import android.os.Handler; > > import android.view.View; > > > public class Main extends Activity > > { > > private Handler handler = new Handler(); > > > private final Runnable runnable = new Runnable() > > { > > public void run() > > { > > DialogBugTestService.getInstance().showDialog(); > > } > > }; > > > /** Called when the activity is first created. */ > > �...@override > > public void onCreate(Bundle savedInstanceState) > > { > > super.onCreate(savedInstanceState); > > setContentView(R.layout.main); > > > startService(new Intent(this, DialogBugTestService.class)); > > } > > > public void onFinishButton(View aView) > > { > > handler.postDelayed(runnable, 3000); > > finish(); > > } > > > public void onLaterButton(View aView) > > { > > handler.postDelayed(runnable, 3000); > > } > > } > > -------------------------------------------------------------- > > main.xml: > > -------------------------------------------------------------- > > <?xml version="1.0" encoding="utf-8"?> > > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ > > android" > > android:orientation="vertical" > > android:layout_width="fill_parent" > > android:layout_height="fill_parent" > > > <Button > > android:id="@+id/finish_button" > > android:layout_width="fill_parent" > > android:layout_height="wrap_content" > > android:text="Finish" > > android:onClick="onFinishButton" > > /> > > <Button > > android:id="@+id/later_button" > > android:layout_width="fill_parent" > > android:layout_height="wrap_content" > > android:text="Post later" > > android:onClick="onLaterButton" > > /> > > </LinearLayout> > > -------------------------------------------------------------- > > DialogBugTestService.java: > > -------------------------------------------------------------- > > package com.myapp.DialogBugTest; > > > import android.app.Service; > > import android.content.Intent; > > import android.os.IBinder; > > import android.util.Log; > > > public class DialogBugTestService extends Service > > { > > private static DialogBugTestService instance = null; > > �...@override > > public void onCreate() > > { > > super.onCreate(); > > instance = this; > > } > > > �...@override > > public int onStartCommand(Intent intent, int flags, int startId) > > { > > return START_STICKY; > > } > > > public static DialogBugTestService getInstance() > > { > > if (instance == null) > > { > > Log.e("service", "instance is null!"); > > } > > return instance; > > } > > > public void showDialog() > > { > > Intent intent = new Intent(this, DialogBugDialog.class); > > intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); > > startActivity(intent); > > } > > > �...@override > > public IBinder onBind(Intent arg0) > > { > > return null; > > } > > } > > -------------------------------------------------------------- > > DialogBugDialog.java: > > -------------------------------------------------------------- > > package com.optimobile.DialogBugTest; > > > import android.app.Activity; > > import android.os.Bundle; > > import android.view.View; > > > public class DialogBugDialog extends Activity > > { > > > �...@override > > protected void onCreate(Bundle aSavedInstanceState) > > { > > super.onCreate(aSavedInstanceState); > > setContentView(R.layout.dialog); > > } > > > public void onOk(View aView) > > { > > finish(); > > } > > > } > > -------------------------------------------------------------- > > dialog.xml: > > -------------------------------------------------------------- > > <?xml version="1.0" encoding="utf-8"?> > > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ > > android" > > android:orientation="vertical" > > android:layout_width="fill_parent" > > android:layout_height="fill_parent" > > > <Button > > android:id="@+id/ok_button" > > android:layout_width="fill_parent" > > android:layout_height="fill_parent" > > android:text="OK" > > android:onClick="onOk" > > /> > > </LinearLayout> > > -------------------------------------------------------------- > > > I've also tried this without the Theme.Dialog as theme and it then > > works fine. I also tried it with custom styles and the bug seems to > > appear whenever windowIsFloating is set to true. > > > Is this a known bug? Are there any workarounds? I really need this > > functionality in my app and doing it without a floating window looks > > really ugly. > > > -- > > 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]<android-developers%[email protected]> > > For more options, visit this group at > >http://groups.google.com/group/android-developers?hl=en > > -- > Dianne Hackborn > Android framework engineer > [email protected] > > Note: please don't send private questions to me, as I don't have time to > provide private support, and so won't reply to such e-mails. All such > questions should be posted on public forums, where I and others can see and > answer them. -- 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

