0

私は音楽チャート(例えばChartActivity)を表示するAndroidタブ付きアプリケーションを持っています。それぞれのアプリケーションは、音楽曲のリスト(EntryActivityなど)を表示します。音楽曲の各エントリをタップすると、たとえばYouTubeアプリが起動します(デフォルトの操作)。それはEntryActivityのlist.setOnItemClickListenerで、私が呼び出しを行う、次のとおりです。Android:Intent.ACTION_VIEWのonKeyUpとonKeyDownをオーバーライド

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(selectedSongUrl)); 
TabGroupActivity parentActivity = (TabGroupActivity)getParent(); 
parentActivity.startChildActivity("YouTube", intent); 

(はい、私はActivityGroupとTabActivityを使用しています。)

問題は時にYouTubeの画面から、私はタブのバックボタンということです、アクティブなビューはEntryActivityではなくChartActivityに戻ります。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

// Overrides the default implementation for KeyEvent.KEYCODE_BACK 
// so that all systems call onBackPressed(). 
@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     TabGroupActivity parentActivity = (TabGroupActivity)getParent(); 
     parentActivity.onBackPressed(); 
     return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

はEntryActivityがテントから送信されたコールバックイベントをお知らせする方法はあります:私は、私はさらに親アクティビティにイベントを渡すことができるように私はYouTubeの画面にonKeyUpを上書きし、onKeyDownことができなかったためである、と思います。 ACTION_VIEW?

答えて

0

アプリの設定がちょっと混乱しています...これは、各タブが独自のアクティビティ(例:ChartActivityとEntryActivityはタブ)を表示する伝統的なタブ付きアクティビティですか?

もしそうなら、あなたはあなたのTabGroupActivityで次の行うことができます:SharedPreferencesで現在アクティブなタブのインデックスを保存する

  1. オーバーライドをonPause()。
  2. (存在する場合)その環境設定を読み込み、最後に使用したタブに切り替えます。
  3. onDestroy()をオーバーライドして、その環境設定を削除します。正しいタブ。

これはあなたのアクティビティがどのように設定されているかわからない場合は、設定方法についてもう少し説明してください。