【问题标题】:Start activity without showing it开始活动而不显示它
【发布时间】:2011-12-20 07:07:12
【问题描述】:

我有一个活动A,它开始活动B,活动B开始活动C。有没有办法不显示活动B。 我想要这种行为,因为如果活动 B 没有内容(例如 ListView),则显示活动 C,我在该活动 C 上选择了一些数据,然后按返回按钮返回活动 B。 关键是我希望在活动堆栈上有活动 B,但在某些情况下不显示它。

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    我找到了解决办法:

    • 活动 A 使用额外参数 (intent.putExtra("something", true)) 启动活动 B
    • 活动 B:
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getIntent().hasExtra("something") && getIntent().getBooleanExtra("something", false) {
                //show activity B
            setContentView(R.layout.activity_B);
        } else {
                //don't show activity B, start activity C
            startActivityForResult(activity_C, ACTIVITY_NOT_INITIALIZED); //start activity C
        }
    }
    

    //从activity C返回时,检查activity B是否已经初始化

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == ACTIVITY_NOT_INITIALIZED) {
            //show activity B
            setContentView(R.layout.activity_B);
      }
    }
    

    【讨论】:

      【解决方案2】:

      在您的清单集中

      android:theme="@android:style/Theme.NoDisplay"
      

      为您的活动。

      【讨论】:

      • 你也需要扩展Activity 而不是AppCompactActivity
      • 使用extends Activity 我得到这个:java.lang.RuntimeException: Unable to resume activity {myActivity}: java.lang.IllegalStateException: Activity {myActivity} did not call finish() before onResume() 完成
      • 这是正确的答案,你仍然可以扩展AppCompatActivity(至少来自androidx)。在它启动新的之前,所有其他答案仍然显示 Activity 的短暂闪烁。
      【解决方案3】:

      不要为活动 B 设置 setContentView()

      【讨论】:

      • 然后回到这个活动会有问题:)
      • 是的,但是在活动C开始之前你会看到半秒钟的空白页。我不想要这个。返回不是问题,因为您可以在 onResume() 中处理它。
      【解决方案4】:

      只需在activity B的onCreate()方法中调用startActivity()即可。不会显示,但会在activity stack中。

      【讨论】:

      • 是的,但是在活动C开始之前你会看到半秒钟的空白页。我不想要这个。
      【解决方案5】:

      您可以调用 startActivity,而无需为布局调用 setContentView。希望这会有所帮助!

      【讨论】:

      • 那么回到这个活动就会有问题:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      相关资源
      最近更新 更多