Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android活动、选项卡、后退按钮_Android_Android Activity_Tabs_Stack_Back - Fatal编程技术网

Android活动、选项卡、后退按钮

Android活动、选项卡、后退按钮,android,android-activity,tabs,stack,back,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开发者关于活动的说明,并尝试使

我正在编写我的第一个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

我也读过关于使用标签的文章,并尝试了一个测试。但是“后退”按钮不会被处理,只会退出应用程序。我意识到我可以自己处理堆栈并覆盖后退按钮,我需要使用ActivityGroup。但是我还没有找到任何关于如何处理ActivityGroup中的back按钮的好例子,我还读到,如果组中的某个活动是ListActivity(我也打算使用),则处理back按钮时存在错误


如果您有任何帮助或指点,我们将不胜感激。

这是我如何使用菜单按钮的。在您的主要活动中,有以下内容:

public void page1aPressed(View button) {
    Intent nextPage = new Intent();
    nextPage.setClassName("com.example",
            "com.example.page1a");
    startActivity(nextPage);
首先,创建一个新的androidxml文件,并将类型设置为menu,它是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,您应该只完成一次;当您选择要避免出现多个列表的内容时

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

public void page1aPressed(View button) {
    Intent nextPage = new Intent();
    nextPage.setClassName("com.example",
            "com.example.page1a");
    startActivity(nextPage);
当您按back键时,它只会转到上一个活动。也许我想错了,但这对我来说很有效

如果您使用TabHost,这是一件很难处理的事情,我不建议这样做

如果您使用上下文菜单,则不会正常调用每个活动!不使用活动组应将活动放入活动堆栈,并使后退按钮的标准功能可用


或者,您可以通过一个单独的菜单视图来模拟底部菜单,该视图包含在所有布局中,这将避免TabHost限制,但会提供相同的外观。

您好,谢谢您的回复。我的代码和你上面贴的完全一样。我的问题是这三个页面都有子页面。它处理那些给我带来问题的导航:即第1页按下按钮转到子页,例如第1a页不是第2页或第3页,然后菜单第3页,按下后退,它会转到第1页而不是第1页子页OK,听起来它会处理返回子活动。如果他们进入1a,1b,然后选择菜单并选择第3页,然后选择菜单并选择第1页,我该如何处理。我希望它在那个点上显示第1b页,即他们访问的最后一个活动子页,但它显示的是1a,因为我的菜单硬编码为开始活动第1a页。我是否需要使用3个堆栈来跟踪它们所处的子活动,并在恢复时让1a、2a和3a检查堆栈,以查看它们应该显示哪些活动?我一直在使用platform<3.0的支持/兼容性包查看片段,并认为我将尝试实现这一点。我确实读过,你不能把地图视图变成一个片段,但我也看到了一些解决方案代码,让它也能工作,因为我也将使用地图视图。再次感谢您抽出时间回复。您能告诉我如何称呼这些子活动吗?这可能会给您一个线索。和你们描述的一般问题一样,TabHost会出现问题,但若你们只是通过菜单调用活动,那个么就不应该出现问题。