vij*_*991 5 android android-activity
我创建了一个应用程序,并且从不对每个活动使用finish().如果我的用户点击了注销按钮,它将转到上一页.
如何关闭以前的活动并关闭应用程序?
这是我尝试过的一种解决方法,它对我来说非常有用.
SOLUTION-1
this.finish();//try activityname.finish instead of this
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
在要退出应用程序的活动中使用它....
================================================== ================================上面的代码有助于恢复你上次停止的应用程序.
SOLUTION-2
如果要退出应用程序并关闭所有需要使用的正在运行的活动.
onActivityResult()
Run Code Online (Sandbox Code Playgroud)
例如,假设您有3个活动A,B,C,您可以从A-> B-> C导航,而在C,您要关闭所有活动,然后使用以下示例.
活动A.
public class A extends Activity {
int Finish = 100;
Button launch_second;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
launch_second = (Button) findViewById(R.id.start_second_act);
launch_second.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent second = new Intent(A.this,
B.class);
startActivityForResult(second, Finish);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 100:
this.finish();
break;
default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)
活动B.
public class B extends Activity {
private Button launch_next;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_main);
launch_next = (Button) findViewById(R.id.start_third_activity);
launch_next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent third = new Intent(B.this,C.class);
startActivityForResult(third, 100);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 100:
setResult(requestCode);
this.finish();
break;
default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
}
Run Code Online (Sandbox Code Playgroud)
活动C.
public class C extends Activity {
Button kill_app;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third_main);
kill_app = (Button)findViewById(R.id.kill_app_btn);
kill_app.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
C.this.finish();
setResult(100);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
SOLUTION-3
有finishAffinity()任何方法可以从任何活动中调用它,之前的所有活动都将被销毁.
| 归档时间: |
|
| 查看次数: |
24390 次 |
| 最近记录: |