2011-12-20 9 views
13

私はアクティビティBを開始し、アクティビティBはアクティビティCを開始します。アクティビティBを表示しない方法はありますか? コンテンツがない場合(ListView )アクティビティBの場合、アクティビティCを表示してデータを選択し、戻るボタンを押してアクティビティBに戻ります。 ポイントは、アクティビティスタックにアクティビティBを設定したいと思っていますが、ケース。アクティビティを表示せずに開始する

答えて

17

アクティビティBのsetContentView()を設定しないでください:

  • 活動Aは、追加のパラメータを(真intent.putExtra( "何か" を、))活動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 
    } 
} 

//バックアクティビティ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

アクティビティBのメソッドでは、startActivity()を呼び出してください。これは表示されませんが、アクティビティスタックにあります。

+4

実際には、アクティビティCが始まる前に空白のページが半秒間表示されます。私はこれを望んでいない。 –

0

レイアウトに対してsetContentViewを呼び出さずに、startActivityを呼び出すことができます。お役に立てれば!

+2

それから、このアクティビティに戻るには問題があります:) – Jin35

2

が、私は解決策を見つけた

+2

このアクティビティに戻るには問題があります:) – Jin35

+2

アクティビティCが始まる前に空白のページが半秒間表示されます。私はこれを望んでいない。 返り値はonResume()で処理できるので問題はありません。 –

10
マニフェストセットで

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

を初期化します。

+4

また、 'AppCompactActivity'ではなく' Activity'を拡張する必要があります。 – vladimir

+0

'extends Activity'でこれを取得しています:java.lang.RuntimeException:アクティビティを再開できません{myActivity}:java.lang.IllegalStateException:{myActivity} onResume()が完了する前にfinish()を呼び出す –

関連する問題