Java 活动如何启动新活动并关闭自身?
我有一个android视图,它调用另一个视图,应该关闭 我使用这个代码Java 活动如何启动新活动并关闭自身?,java,android,android-intent,android-activity,Java,Android,Android Intent,Android Activity,我有一个android视图,它调用另一个视图,应该关闭 我使用这个代码 public void onClick(View v) { Intent intent = new Intent(A.this, B.class); startActivityForResult(intent,1); setResult(RESULT_OK); finish();
public void onClick(View v) {
Intent intent = new Intent(A.this, B.class);
startActivityForResult(intent,1);
setResult(RESULT_OK);
finish();
}
我看到活动B打开并调用完成后,活动A出现
我知道它从未关闭过
我如何解决这个问题 试试看
public void onClick(View v) {
Intent intent = new Intent(A.this, B.class);
A.this.finish();
startActivity(intent);
}
在开始活动之前调用finish()
public void onClick(View v) {
Intent intent = new Intent(A.this, B.class);
finish();
startActivityForResult(intent,1);
setResult(RESULT_OK);
}
您必须在想要开始新活动的地方使用意图
Intent intent=new Intent(MainActivity.this,newActivity.class);
startActivity(intent);
您必须覆盖main活动onPause()
请尝试以下代码:
public void onClick(View v) {
Intent intent = new Intent(A.this, B.class);
startActivity(intent);
finish();
}
您正在启动活动
B
,查看活动A
public void onClick(View v) {
Intent intent = new Intent(A.this, B.class);
startActivityForResult(intent,1);
setResult(RESULT_OK);
finish();
}
因此,当活动B
完成时,活动A
期望活动B
交付结果
现在,要解决此问题,请在启动活动A
的活动的onActivityResult()
方法中启动活动B
// modified onClick method
public void onClick(View v) {
// simply set result to OK and finish activity A
setResult(RESULT_OK);
finish();
}
在启动activityA
的activity中,定义两个常量,或者您可以使用单独的Java类来定义常量并在此类中引用它们
public static final int REQUEST_CODE_FOR_A = 100;
public static final int REQUEST_CODE_FOR_B = 101;
覆盖活动中启动活动A
和启动活动B
的onActivityResult()
方法,如下所示
@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
}
}
}
希望这能有所帮助。我觉得这似乎不对,你必须在以下两种情况中做出选择:从新活动中剔除一个值,在这种情况下,你无法完成当前活动;在启动新活动时,如果不剔除一个值,你可以完成“母亲”活动。这不会在开始新活动之前关闭活动吗?这正是您想要的,对吗?结束活动!是的,它将在开始新的活动之前完成活动。你必须这样做吗?为什么要onCreate/onPause?您可以在任何地方完成活动,但这是在onPause中完成活动的正确方法,因为当我们在intent中调用新活动时,应用程序会在onPause中暂停活动,因此我会通过完成第一个活动来覆盖此功能
public static final int REQUEST_CODE_FOR_A = 100;
public static final int REQUEST_CODE_FOR_B = 101;
@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
}
}
}