我有一个TabActivity,它有三个标签。第一个标签就是问题所在。第一个选项卡加载ActivityGroup。 OnCreate它加载默认内容视图。稍后在某个事件中,我们会添加不同的内容视图。这很好,但我的问题是有人在第二个内容视图加载后按下手机上的后退按钮。它将它们带到最后一个Activity,而不是将它们带到ActivityGroup中添加的第一个内容视图。如何重定向后退按钮以调用ActivityGroup中的方法?
我正在以这种方式构建它,我可能在一个选项卡中有多个视图(活动)。关于如何将后退按钮事件重定向到我自己的方法的任何想法?那会很简单。
如果代码有用:
public class LiveTabGroup extends ActivityGroup implements MoveToScreenNotification.handler
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
EventBus.subscribe(MoveToScreenNotification.class, this);
View view = getLocalActivityManager().startActivity("CameraListView", new Intent(this,CameraListView.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
this.setContentView(view);
}
@Override
public void onMoveToScreenNotification(MoveToScreenNotification notif)
{
if (notif.newScreen == MoveToScreenNotification.SCREEN_MOVIEPLAYER_LIVE)
{
SugarLoafSingleton.currentCamera.url = notif.videoURL;
// Throw UI management on main thread
runOnUiThread(new Runnable(){
public void run()
{
StartPlayer();
}
});
}
}
public void StartPlayer()
{
View view = getLocalActivityManager().startActivity("VideoPlayer", new Intent(this,VideoPlayerView.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
this.addContentView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT));
}
}
答案 0 :(得分:2)
我必须自己覆盖Back按钮。请参阅下面的代码,为您执行此操作。基本上,这会覆盖Android Activity类中onKeyDown的默认实现。后退按钮的键代码是KeyEvent.KEYCODE_BACK,此代码捕获了该代码。除此之外,它只会运行默认处理程序:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Put your custom code for handling the Back button here
// Return here (exit function) or else it will run the
// default implementation of the Back button
return;
}
return super.onKeyDown(keyCode, event);
}