我有一个活动A,它开始活动B,活动B开始活动C.有没有办法不显示活动B. 我想要这种行为,因为如果活动B没有内容(例如ListView),请显示我选择一些数据的活动C,然后按返回按钮返回活动B. 关键是我想在活动堆栈上有活动B,但在某些情况下不显示它。
答案 0 :(得分:17)
我找到了解决方案:
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。希望这有帮助!