如何关闭android中的特定活动?

时间:2016-08-19 16:19:57

标签: android android-activity

我有三个活动A,B和C,其中C是调用HOME屏幕的活动,如下所示

finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

首先,活动A将通过

调用活动B.
Intent B_intent = new Intent(this, B.class);
B_intent .putExtra("B_Activity", true);
this.startActivity(B_intent );

然后,从A,我也可以调用C活动(A通过使用线程来做)。我的问题是当我调用C活动时如何清除/删除/或完成活动B,这样当我再次调用B时,它必须转到B_Activity类中的onCreate()函数 我尝试使用函数

if (getIntent().getBooleanExtra("B_Activity", false))
 {
   finish();
 }

非常感谢

2 个答案:

答案 0 :(得分:1)

我有3种解决方案:

1)首先,您只需实现B_Activity的onResume()方法功能,这样当您从C_Activity返回到B_Activity时,它就会被执行。

2)我强烈建议你应该使用 Fragments

3)如果这不能解决您的问题,那么此类用例的最佳方法是制作 静态工厂方法 像这样:

public static void finishActivity(MainActivity mainActivity){
        if(mainActivity!=null)
            mainActivity.finish();
    }

现在打电话:

MainActivity.finishActivity(mainActivity);

从您想要关闭SecondActivity的运行实例的任何地方。您必须传递MainActivity的实例,并且一旦启动它就可以获得它。

希望这会有所帮助。快乐的编码:)

答案 1 :(得分:0)

B.this.finish(); // it will destroys the activity B

在通过意图进入活动C之前,按照以下方式销毁活动B,

B.this.finish();
Intent i = new Intent(B.this,C.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

现在当您从活动A / C调用活动B时,它将调用B活动的onCreate()。