Android活动,标签,后退按钮

时间:2012-01-26 13:29:53

标签: android android-activity tabs stack back

我正在编写我的第一个Android应用。它是一个iPhone应用程序的端口,底部有3个标签,称为A,B和C.标签A有4个子活动(A1,A2,A3,A4),标签B有3个子活动,标签C有2个儿童活动。

对于Android应用,我真的不想在底部显示iPhone风格标签栏。事实上,我宁愿没有标签栏(所以我可以使用更多的屏幕),而是使用菜单按钮在活动A,B和C之间交换。

我真的很难选择最好的方法来实现它,这也需要正确处理后退按钮。

我已经阅读了Android开发人员关于活动的说明并尝试了这一点(使用意图标志来禁用'向左滑动'效果)这适用于在A1,B1,C1之间切换,但如果您已导航A1, A2,然后C1我不知道如何让后退按钮转到A2(它转到A1)

我也读过关于使用Tabs并尝试使用它的测试。但是,后退按钮不会被处理,只是退出应用程序。我意识到我可以自己处理堆栈并覆盖Back按钮,我需要使用ActivityGroups。但是我没有找到任何关于如何处理ActivityGroup中的后退按钮的好例子,并且还读到如果组中的一个活动是ListActivity,则处理后退按钮时会出现错误,我也打算使用它。

任何帮助或指示都将不胜感激,以帮助我开始。

2 个答案:

答案 0 :(得分:0)

这就是我使用菜单按钮的方法。在你的主要活动中有这样的事情:

首先,创建一个新的android xml文件并将类型设置为菜单(它是eclipse中的一个下拉菜单),然后menu.xml文件将自动在正确的位置生成。

打开布局,添加3个项目(每个页面对应一个要切换的页面)

    // Menu button pressed
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.page1:
        startActivity(new Intent(this, page1Activity.class));
        break;
    case R.id.page2:
        startActivity(new Intent(this, page2Activity.class));
        break;
    case R.id.page3:
        startActivity(new Intent(this, page3Activity.class));
        break;
    }
    return true;

其中page1Activity和其他类是其他类。

确保在布局的Id部分中有@ + id / page1等等......

只需将这些活动添加到您的清单中即可。后退按钮可以正常使用(虽然我没有尝试使用listview。使用listview你应该只有一个finish();当你选择一些东西以避免多个列表时)

要切换子页面,请使用以下内容:

public void page1aPressed(View button) {
    Intent nextPage = new Intent();
    nextPage.setClassName("com.example",
            "com.example.page1a");
    startActivity(nextPage);

当您按下它时,它将转到上一个活动。也许我在想这个错,但它对我有用。

答案 1 :(得分:0)

  1. 如果您使用TabHost,那么处理起来相当困难,我不建议

  2. 如果使用上下文菜单而不是正常调用每个活动(!不带活动组),则应将活动放入活动堆栈,并使后退按钮的标准功能可用。

  3. 或者你可以通过一个单独的菜单模仿底部菜单查看你所包含的所有布局,这将避免TabHost限制,但会给出相同的外观。