Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:在Intent.ACTION\u视图中覆盖onKeyUp和onKeyDown_Android_Android Intent_Back Button_Tabactivity_Activitygroup - Fatal编程技术网

Android:在Intent.ACTION\u视图中覆盖onKeyUp和onKeyDown

Android:在Intent.ACTION\u视图中覆盖onKeyUp和onKeyDown,android,android-intent,back-button,tabactivity,activitygroup,Android,Android Intent,Back Button,Tabactivity,Activitygroup,我有一个Android选项卡式应用程序,可以显示音乐图表(比如说,ChartActivity),每个图表都会依次显示音乐曲目列表(比如,EntryActivity)。点击每个音乐曲目条目将启动,例如YouTube应用程序(默认操作)。也就是说,在EntryActivity的list.setOnItemClickListener中,我调用: Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(selectedSongUrl)); Tab

我有一个Android选项卡式应用程序,可以显示音乐图表(比如说,ChartActivity),每个图表都会依次显示音乐曲目列表(比如,EntryActivity)。点击每个音乐曲目条目将启动,例如YouTube应用程序(默认操作)。也就是说,在EntryActivity的list.setOnItemClickListener中,我调用:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(selectedSongUrl));
TabGroupActivity parentActivity = (TabGroupActivity)getParent();
parentActivity.startChildActivity("YouTube", intent);
(是的,我使用ActivityGroup和TabActivity。)

问题是,当我在YouTube屏幕上点击后退按钮时,活动视图不会返回EntryActivity,而是返回ChartActivity。我想,这是因为我无法在YouTube屏幕上覆盖onKeyUp和onKeyDown,以便我可以进一步将事件传递给父活动:

@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知道从Intent.ACTION\u VIEW发送的回调事件?

我对应用程序的设置有点困惑。。。这是一种传统的选项卡式活动,其中每个选项卡都显示自己的活动(例如,ChartActivity和EntryActivity是选项卡)

如果是这样,您可以在TabGroupActivity中执行以下操作:

  • Override onPause()将当前活动选项卡的索引保存在SharedReferences中
  • 重写onResume()以读入该首选项(如果存在),并切换到上次使用的选项卡
  • 重写onDestroy()并删除该首选项,以便下次启动活动时在正确的选项卡中启动
  • 如果你的活动不是这样设置的,请多解释一下如何设置