杀死另一个活动

Kar*_*nan 8 android android-intent android-activity

我有两个活动A和B. B是透明的传递活动,可以看到A. 我想按下按钮A杀死B.

这是我到目前为止所尝试的:

B obj=new B();
obj.finish();
Run Code Online (Sandbox Code Playgroud)

我创建了一个B的对象并试图杀死它.那没用.

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.putExtra("keep", true);
                startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

这段代码应该做的是清除最顶层的活动,即B并再次调用B,除非这次我传递的值使得B在几秒钟后自杀.

由于某种原因,这只会增加活动的更多实例.或者至少我认为发生了什么,因为屏幕由于许多透明的活动而变得像素化.

这是我的清单:

<activity
        android:name="com.xxx.xxx.B"
        android:excludeFromRecents="true"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        android:clearTaskOnLaunch="true" >
    </activity>
Run Code Online (Sandbox Code Playgroud)

当我在显示活动时按下按钮并且第二次杀死按钮时,我该怎么办呢?创作部分显然得到了照顾.我的活动B弹出,我想杀死它,因为B在顶部.

编辑

我用一个checkBox尝试了这个,这是代码:

enable.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            finishActivity(0);
            Intent intent = new Intent(A.this, B.class);
            if (enable.isChecked()) {
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.putExtra("keep", true);
                intent.putExtra("value", 10);
                startActivityForResult(intent, 0);
            }
            else
            {
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.putExtra("keep", false);
                startActivityForResult(intent, 0);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

选中启用后,将调用该活动,该工作正常.但他们一直在努力.当我检查并取消选中复选框时,它不像这个A-> B-> A-> B. 它是A-> B-> BB-> BBB

Lum*_*mis 46

您可以尝试通过调用该活动中的静态方法直接终止活动:

活动A应该有一个变量

 static ActivityA activityA;
Run Code Online (Sandbox Code Playgroud)

在onCreate状态:

 activityA = this;
Run Code Online (Sandbox Code Playgroud)

并添加此方法:

public static ActivityA getInstance(){
   return   activityA;
 }
Run Code Online (Sandbox Code Playgroud)

在活动B中,调用函数getInstance()

ActivityA.getInstance().finish();     
Run Code Online (Sandbox Code Playgroud)

  • 关闭ActivtyA时,在活动B中终止对它的引用:activityA = null; (2认同)