Android:覆盖 Intent.ACTION_VIEW 中的 onKeyUp 和 onKeyDown
我有一个 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,而是到图表活动。我想,这是因为我无法在 YouTube 屏幕中覆盖 onKeyUp 和 onKeyDown ,以便我可以进一步将事件传递给父 Activity:
@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 发送的回调事件?
I have an Android tabbed application that displays music charts (say, ChartActivity), each of which in turn displays a list of music tunes (say, EntryActivity). Tapping on each entry of music tunes will launch, e.g., a YouTube app (default actions). That is, in list.setOnItemClickListener of EntryActivity, I make calls:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(selectedSongUrl));
TabGroupActivity parentActivity = (TabGroupActivity)getParent();
parentActivity.startChildActivity("YouTube", intent);
(Yes, I use ActivityGroup and TabActivity.)
The problem is that when I tab the back button from the YouTube screen, the active view does not come back to EntryActivity, but to ChartActivity. I guess, this is because I could not override onKeyUp and onKeyDown in YouTube screen so that I can further pass the event to the parent activity:
@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);
}
Is there any way to let EntryActivity know callback events sent from Intent.ACTION_VIEW?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我对您的应用程序的设置有点困惑...这是传统的选项卡式活动,其中每个选项卡显示自己的活动(例如 ChartActivity 和 EntryActivity 是选项卡)?
如果是这样,您可以在 TabGroupActivity 中执行以下操作:
如果您的活动不是这样设置的,请详细解释一下如何设置。
I'm a little confused on the setup of your app... Is this a traditional tabbed activity where each tab displays its own activity (e.g. ChartActivity and EntryActivity are tabs)?
If so, you could do the following in your TabGroupActivity:
If that is not how your activity is set up, please explain a little more about how things are set up.