开发者

Switching tasks in one application

I wanted to reproduce situation shown here: http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html#TaskLaunchModes Where I start app using activity X0, then start activity A1 as new task and open activity A2 as single task. Next I open activity B1 as new task, then I start activity B2 and then I'd like to switch to activity A2. On back I would go to A1, then B2, B1 and finally to X0.

Here is my manifest:

     <application
           android:icon="@drawable/icon"
           android:label="@string/app_name">
           <activity
                   android:name="X0"
                   android:label="@string/app_name">
                   <intent-filter>
                           <action
                                   android:name="android.intent.action.MAIN" />
                           <category
                                   android:name="android.intent.category.LAUNCHER" />
                   </intent-filter>
           </activity>
           <activity
                   android:name="A1"
                   android:allowTaskReparenting="false"
                   android:taskAffinity="@string/task_A"
                   android:label="@string/app_name">
           </activity>
           <activity
                   android:name="A2"
                   android:allowTaskReparenting="false"
                   android:taskAffinity="@string/task_A"
                   android:launchMode="singleTop"
                   android:label="@string/app_name">
           </activity>
           <activity
                   android:name="B1"
                   android:allowTaskReparenting="false"
                   android:taskAffinity="@string/task_B"
                   android:label="@string/app_name">
           </activity>
           <activity
                   android:name="B2"
                   android:allowTaskReparenting="false"
                   androi开发者_运维知识库d:taskAffinity="@string/task_B"
                   android:launchMode="singleTask"
                   android:label="@string/app_name">
           </activity>
   </application>

At first I hadn't any allowTaskReparenting nor taskAffinity, I started to experiment with those settings.

And here is my code for activity, it's the same among activities:

   ((TextView) findViewById(R.id.title)).setText("X0" + getTaskId() + isTaskRoot()); //some debugging

   findViewById(R.id.a1).setOnClickListener(new OnClickListener() {

                   @Override
                   public void onClick(View v) {
                           Intent intent = new Intent();
                           intent.setClass(getApplicationContext(), A1.class);
                           intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                           intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
                           startActivity(intent);
                   }
           });
           findViewById(R.id.a2).setOnClickListener(new OnClickListener() {

                   @Override
                   public void onClick(View v) {
                           Intent intent = new Intent();
                           intent.setClass(getApplicationContext(), A2.class);
                           startActivity(intent);
                   }
           });
           findViewById(R.id.b1).setOnClickListener(new OnClickListener() {

                   @Override
                   public void onClick(View v) {
                           Intent intent = new Intent();
                           intent.setClass(getApplicationContext(), B1.class);
                           intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                           intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
                           startActivity(intent);
                   }
           });
           findViewById(R.id.b2).setOnClickListener(new OnClickListener() {

                   @Override
                   public void onClick(View v) {
                           Intent intent = new Intent();
                           intent.setClass(getApplicationContext(), B2.class);
                           startActivity(intent);
                   }
           });

Now I'm clicking A1, A2, B1, B2, A2 and the A2 should be from task A, but it opens new activity A2 in stack B.

Is it possible to switch between tasks that I've created?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜