我有一个调用另一个视图的android视图,应该关闭。
我使用此代码
public void onClick(View v) {
Intent intent = new Intent(A.this, B.class);
startActivityForResult(intent,1);
setResult(RESULT_OK);
finish();
}
我看到活动B打开并调用完成后,活动A出现
我知道它从未关闭过。
我该如何解决这个问题?
答案 0 :(得分:1)
尝试
public void onClick(View v) {
Intent intent = new Intent(A.this, B.class);
A.this.finish();
startActivity(intent);
}
答案 1 :(得分:0)
在开始活动之前致电finish()
public void onClick(View v) {
Intent intent = new Intent(A.this, B.class);
finish();
startActivityForResult(intent,1);
setResult(RESULT_OK);
}
答案 2 :(得分:0)
你必须使用Intent在哪里开始新的活动
Intent intent=new Intent(MainActivity.this,newActivity.class);
startActivity(intent);
你必须覆盖 MainActivity onPause()
@Override
protected void onPause() {
finish();
}
答案 3 :(得分:0)
请尝试以下代码:
public void onClick(View v) {
Intent intent = new Intent(A.this, B.class);
startActivity(intent);
finish();
}
答案 4 :(得分:0)
public void onClick(View v) {
Intent intent = new Intent(A.this, B.class);
startActivity(intent);
finish();
}
答案 5 :(得分:0)
对于活动B
A
public void onClick(View v) {
Intent intent = new Intent(A.this, B.class);
startActivityForResult(intent,1);
setResult(RESULT_OK);
finish();
}
因此,当活动A
完成时,活动B
期望按活动B
提供结果。
现在,要解决此问题,请在您开始活动B
的活动的onActivityResult()
方法中启动活动A
。
// modified onClick method
public void onClick(View v) {
// simply set result to OK and finish activity A
setResult(RESULT_OK);
finish();
}
在启动活动A
的活动中,定义两个常量,或者您可以使用单独的Java类来定义常量并在此类中引用它们。
public static final int REQUEST_CODE_FOR_A = 100;
public static final int REQUEST_CODE_FOR_B = 101;
覆盖启动活动onActivityResult()
的活动中的A
方法,并按如下方式启动活动B
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if(requestCode == REQUEST_CODE_FOR_A) {
// start activity B when activity returns RESULT_OK
Intent intent = new Intent(this, B.class);
startActivityForResult(intent, REQUEST_CODE_FOR_B);
} else if (requestCode == REQUEST_CODE_FOR_B) {
// handle the result from Activity B
}
}
}
希望这有帮助。