2011-12-20 80 views
13

我有一個活動A,它開始活動B,活動B開始活動C.是否有辦法不顯示活動B. 我想要這種行爲,因爲如果沒有內容(例如對於ListView )顯示活動B,顯示活動C,我在其上選擇一些數據,然後按返回按鈕返回到活動B. 問題是,我希望在活動堆棧上有活動B,但不能在活動堆棧中顯示它案例。開始活動時不顯示它

回答

17

我找到了解決辦法:

  • 活動A開始活動B有額外的參數(intent.putExtra( 「東西」,真))
  • 活動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 w ^如已初始化

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

只需撥打startActivity()onCreate()活動方法B.它不會顯示,但它會在活動堆棧中。

+4

這是真的,但在活動C開始之前您會看到空白頁半秒。我不想要這個。 – 2011-12-20 07:22:40

0

您可以調用startActivity,而無需爲佈局調用setContentView。希望這可以幫助!

+2

然後回到這個活動將有問題:) – Jin35 2011-12-20 07:15:41

2

沒有爲活動B組的setContentView()

+2

然後回到這個活動將有問題:) – Jin35 2011-12-20 07:15:36

+2

這是真的,但你會看到活動C開始前的半秒空白頁。我不想要這個。 返回不是一個問題,因爲你可以在onResume()中處理它。 – 2011-12-20 07:23:01

10

在你的清單中設置

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

爲您的活動。

+4

你也需要擴展'Activity'而不是'AppCompactActivity' – vladimir 2017-04-12 16:48:12

+0

With'extends Activity'我得到這個:java.lang.RuntimeException:無法恢復活動{myActivity}:java.lang.IllegalStateException:Activity {myActivity} did not在onResume()完成之前調用finish() – 2017-07-13 12:36:52