如何关闭所有活动

时间:2017-07-27 06:35:57

标签: android android-activity activity-finish

Login_page>>home_page>>search_account>>delete_account

然后我删除了一个帐户,我想转到login_page。我的意思是什么是没有login_page关闭所有活动的实际代码?

这是我的代码,但不起作用。

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();

6 个答案:

答案 0 :(得分:2)

使用此方法打开登录活动,它将终止后台堆栈中的所有其他活动

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);

希望这能解决您的问题

答案 1 :(得分:0)

您只需使用CLEAR_TOP标志启动登录活动。

Intent intent = new Intent(this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

通过执行此操作,将关闭所有先前的活动,并且只有LoginActivity将在堆栈上。

答案 2 :(得分:0)

在意图中使用CLEAR_TOP标志。它将解决您的问题。

Intent intent = new Intent(this, LoginActivity.class);   
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);

答案 3 :(得分:0)

你可以试试这个。

// 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

答案 4 :(得分:0)

使用此方法:

    public static void finishAll(Context context)
{
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        ((Activity) context).finishAffinity();
    }
    else
    {
        ((Activity) context).finish();
                }
}

希望它有所帮助!

答案 5 :(得分:0)

您应该使用activity.startActivityForResult()。请务必查看有关此主题的Android docs