启动活动而不显示它

时间:2011-12-20 07:07:13

标签: android android-activity

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

5 个答案:

答案 0 :(得分:17)

我找到了解决方案:

  • 活动A使用额外参数启动活动B(intent.putExtra(“something”,true))
  • 活动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
    }
}

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

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

答案 1 :(得分:13)

在你的清单集中

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

为您的活动。

答案 2 :(得分:2)

不要为活动B设置setContentView()

答案 3 :(得分:1)

只需在活动B的startActivity()方法中调用onCreate()即可。它将不会显示,但会显示在活动堆栈中。

答案 4 :(得分:0)

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