TabActivity中的多个活动

时间:2011-06-06 15:34:47

标签: android

我有一个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));


}

}

1 个答案:

答案 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);
}