如何关闭所有 activity
How to close all activity
Login_page>>home_page>>search_account>>delete_account
然后我删除了一个帐户,然后我想转到 login_page
。我的意思是在没有 login_page
的情况下关闭所有 activity 的实际代码是什么?
这是我的代码,但不起作用。
AlertDialog.Builder builder = new AlertDialog.Builder(delete_class.this);
builder.setTitle("Delete");
builder.setMessage("Do you want to delete your account ??");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String id = MainActivity.return_id();
Firebase firebase = new Firebase("user");
firebase.child(id).removeValue();
finish();
Toast.makeText(delete_class.this,"Account deleted successfully",Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("No",null);
AlertDialog alertDialog = builder.create();
alertDialog.show();
您只需使用 CLEAR_TOP 标志开始登录 activity。
Intent intent = new Intent(this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
这样做,之前的所有Activity都会被关闭,只有LoginActivity会在栈上。
使用此方法打开登录 activity 它会杀死后台堆栈中的所有其他 activity
public static void GoToActivityAsNewTask(Activity context, Class<?> clazz) {
Intent intent = new Intent(context, clazz);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
context.finish();
}
来电会像
GoToActivityAsNewTask(this, LoginActivity.class);
希望这能解决您的问题
在意图中使用 CLEAR_TOP
标志。它将解决您的问题。
Intent intent = new Intent(this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);
你可以试试这个。
// Add activity
public static void addActivities(String actName, Activity _activity) {
if (Config.screenStack == null)
Config.screenStack = new HashMap<String, Activity>();
if (_activity != null)
Config.screenStack.put(actName, _activity);
}
// Remove Activity
public static void removeActivity(String key) {
if (Config.screenStack != null && Config.screenStack.size() > 0) {
Activity _activity = Config.screenStack.get(key);
if (_activity != null) {
Config.screenStack.remove(key);
_activity.finish();
}
}
}
// Close all activities or screens
public static void closeAllScreens()
{
if (Config.screenStack != null && Config.screenStack.size() > 0)
{
for (int i = 0; i < Config.screenStack.size(); i++)
{
Activity activity = Config.screenStack.get(i);
if (activity != null)
{
Config.screenStack.remove(key);
activity.finish();
}
}
}
}
用户在 setContentView 之前添加活动以添加到堆栈中。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addActivities("DemoActivity", DemoActivity.this)
setContentView(R.layout.activity_create_feed_post);
}
更多信息请参考this。
使用这个方法:
public static void finishAll(Context context)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
((Activity) context).finishAffinity();
}
else
{
((Activity) context).finish();
}
}
希望对您有所帮助!
您可能应该使用 activity.startActivityForResult()
。请务必查看有关此主题的 Android docs。
Login_page>>home_page>>search_account>>delete_account
然后我删除了一个帐户,然后我想转到 login_page
。我的意思是在没有 login_page
的情况下关闭所有 activity 的实际代码是什么?
这是我的代码,但不起作用。
AlertDialog.Builder builder = new AlertDialog.Builder(delete_class.this);
builder.setTitle("Delete");
builder.setMessage("Do you want to delete your account ??");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String id = MainActivity.return_id();
Firebase firebase = new Firebase("user");
firebase.child(id).removeValue();
finish();
Toast.makeText(delete_class.this,"Account deleted successfully",Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("No",null);
AlertDialog alertDialog = builder.create();
alertDialog.show();
您只需使用 CLEAR_TOP 标志开始登录 activity。
Intent intent = new Intent(this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
这样做,之前的所有Activity都会被关闭,只有LoginActivity会在栈上。
使用此方法打开登录 activity 它会杀死后台堆栈中的所有其他 activity
public static void GoToActivityAsNewTask(Activity context, Class<?> clazz) {
Intent intent = new Intent(context, clazz);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
context.finish();
}
来电会像
GoToActivityAsNewTask(this, LoginActivity.class);
希望这能解决您的问题
在意图中使用 CLEAR_TOP
标志。它将解决您的问题。
Intent intent = new Intent(this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);
你可以试试这个。
// Add activity
public static void addActivities(String actName, Activity _activity) {
if (Config.screenStack == null)
Config.screenStack = new HashMap<String, Activity>();
if (_activity != null)
Config.screenStack.put(actName, _activity);
}
// Remove Activity
public static void removeActivity(String key) {
if (Config.screenStack != null && Config.screenStack.size() > 0) {
Activity _activity = Config.screenStack.get(key);
if (_activity != null) {
Config.screenStack.remove(key);
_activity.finish();
}
}
}
// Close all activities or screens
public static void closeAllScreens()
{
if (Config.screenStack != null && Config.screenStack.size() > 0)
{
for (int i = 0; i < Config.screenStack.size(); i++)
{
Activity activity = Config.screenStack.get(i);
if (activity != null)
{
Config.screenStack.remove(key);
activity.finish();
}
}
}
}
用户在 setContentView 之前添加活动以添加到堆栈中。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addActivities("DemoActivity", DemoActivity.this)
setContentView(R.layout.activity_create_feed_post);
}
更多信息请参考this。
使用这个方法:
public static void finishAll(Context context)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
((Activity) context).finishAffinity();
}
else
{
((Activity) context).finish();
}
}
希望对您有所帮助!
您可能应该使用 activity.startActivityForResult()
。请务必查看有关此主题的 Android docs。