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)
| 归档时间: |
|
| 查看次数: |
25237 次 |
| 最近记录: |