0

我有一个 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_VIEW 发送的回调事件?

4

1 回答 1

0

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

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

  1. 覆盖 onPause() 以将当前活动选项卡的索引保存在 SharedPreferences 中。
  2. 覆盖 onResume() 以读取该首选项(如果存在)并切换到您上次进入的选项卡。
  3. 覆盖 onDestroy() 并删除该首选项,以便下次启动活动时在正确的选项卡中启动。

如果这不是您的活动的设置方式,请详细解释一下设置方式。

于 2012-02-08T18:52:36.850 回答