【问题标题】:onBackPressed not working in Implicit intentonBackPressed 在隐式意图中不起作用
【发布时间】:2019-07-25 07:27:36
【问题描述】:

在我的应用程序中,我有一个 Activity 和 Fragment,从按钮上的 Fragment 单击我做一个隐式 Intent,打开另一个应用程序。如果我执行设备后按,当另一个应用程序打开时,这两个应用程序都将关闭。我希望我的应用程序应该恢复。请任何指导我我出了什么问题。谢谢

我是这样做的

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.package.basic");
     if (launchIntent != null) {
         launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         startActivity(launchIntent);
     } else {
        Toast.makeText(getContext(), "Package not found", Toast.LENGTH_SHORT).show();
     }

我的活动 onBackPressed

 @Override
 public void onBackPressed() {
       FragmentManager fm = getSupportFragmentManager();
       int backStackEntryCount = fm.getBackStackEntryCount();
       if(backStackEntryCount>1) {
            super.onBackPressed();
        }
 }

【问题讨论】:

  • 在您的 logcat 中,您从其他应用程序返回到您的应用程序后是否发生任何错误
  • 您正在使用 NEW_TASK 开始使用该活动,这将在新任务中启动该活动,并且您在 backpress 上的活动也不会调用,因为如果您明确点击 onbackpressed 它将调用
  • 你在onResume方法里写了什么?

标签: android android-fragments android-intent onbackpressed


【解决方案1】:

查看当您打开一个新 Activity 时,此 Activity 会堆叠在当前正在运行的 Activity 之上,当您按下后,新 Activity 会关闭并从 Stack 中恢复之前的 Activity。

 Activity A ------opens new activity -----> Activity B 

 Activity A <------on back press----- Activity B 

但是当您从您的应用程序中打开另一个应用程序时。就像您手动打开另一个应用程序一样。就像您通常手动打开另一个应用程序一样,假设您正在使用 FB 应用程序,现在您想打开另一个应用程序,比如 Instagram。

步骤

  1. 最小化 FB 的应用程序

  2. 然后打开 Instagram

  3. 现在,当您关闭 Instagram 时,它将无法使用以前的 FB 应用程序恢复

这就是你的代码正在发生的事情。 所以你需要使用这个

 startActivityForResult(intent,101); // then if the user closes the app it will resume to your app

而不是 startActivity(intent);

【讨论】:

    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多