Android activity 处理向下滑动作为后退按钮

Android activity 处理向下滑动作为后退按钮,android-activity,google-glass,google-gdk,Android Activity,Google Glass,Google Gdk,我正在为谷歌眼镜写一个简单的应用程序。有三个活动分别处理一张静态卡。每张卡都有自己的菜单。现在我在google developer上读到,向下滑动应该像android智能手机上的后退按钮一样工作,即调用堆栈中的最后一个活动。现在我的问题是,这只适用于“启动器”活动 ok glass menu->activity\u 1->ok glass menu工作正常,但是 activity\u 1->activity\u 2->activity\u 1没有。 活动3也是如此。但是,如果从活动_3调用了活动

我正在为谷歌眼镜写一个简单的应用程序。有三个活动分别处理一张静态卡。每张卡都有自己的菜单。现在我在google developer上读到,向下滑动应该像android智能手机上的后退按钮一样工作,即调用堆栈中的最后一个活动。现在我的问题是,这只适用于“启动器”活动

ok glass menu->activity\u 1->ok glass menu
工作正常,但是
activity\u 1->activity\u 2->activity\u 1
没有。 活动3也是如此。但是,如果从活动_3调用了活动_1,向下滑动的行为与预期的一样。(
activity\u 3->activity\u 1->activity\u 3
works)

此外,向下滑动可在所有活动的菜单中工作

现在我有几个问题:

  • 为每张卡使用单独活动的方法是否正确
  • 用户输入应该在
    onKeyDown
    方法中处理还是在
    onClicklistener
    中处理
  • 是否需要覆盖向下滑动手势以使其按预期方式工作(返回到上一个活动)
  • 无关:所有“我的菜单”只包含一个选项,该选项被用户用作一种确认,表示他想继续。(即调用下一个活动)。这是最佳实践吗
  • 我花了3个小时在网上搜索这个问题。我尝试调用
    super.onBackPressed
    ,实现各种类型的侦听器,并在视图上使用
    setFocusMethod
    。 非常感谢您对如何在整个应用程序中保持一致的建议。 提前谢谢

    在下面,您可以找到其中一项活动的代码,这三项活动的代码看起来都很相似

    public class Test1Activity extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        View test1 = new CardBuilder(getBaseContext(), CardBuilder.Layout.CAPTION)
            .setText("test1")
            .getView();
    
        setContentView(test1);
    }
    
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
            openOptionsMenu();
            return true;
        }
        return false;
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.test1, menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId()) {
            case R.id.test1_ack:
                Intent intent = new Intent(this, Test2Activity.class);
                startActivity(intent);
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    }
    
  • 为每张卡使用单独活动的方法是否正确
  • 视情况而定。在安卓系统中,一项活动代表用户可以做的一件专注的事情。所以,如果你的活动/卡片没有关系,那也没关系。 如果是,您可以使用CardScrollView将卡片分组到一个活动中。 可能也会有帮助。(它解释了如何将信息分组在一起。)

  • 用户输入应该在onKeyDown方法中处理还是在onClicklistener中处理
  • 你应该使用。看见 onKeyDown功能有限,因为它不是为玻璃设计的。我可能错了,但我想你只能用onKeyDown来检测点击

  • 是否需要覆盖向下滑动手势以使其按预期方式工作(返回到上一个活动)
  • 这是默认行为(无标志)。如果在启动活动2时没有对活动1调用finish(),则应该能够返回而不重写任何方法。 请参阅:。 您还可以在清单中使用android:parentActivityName标记来指定父活动。()

  • 无关:所有“我的菜单”只包含一个选项,用户使用该选项确认他想继续。(即。 调用下一个活动)。这是最佳实践吗
  • 这有点奇怪,但没什么错。无论如何,当用户做某事时,您不需要每次都得到确认。 我不是用户体验设计师,但我从内置应用程序中注意到,Glass上的确认/确认屏幕并不常见。 例如,当您发送短信时,没有确认对话框。我想设计团队会尽力消除不必要的交互。 尝试使菜单代表一个动作,以便用户在每次点击时向前/或做一些事情。

    另见

    注意:我不是用户体验设计专家,所以不要相信我:)

    。我实现了如下所示的流程


    非常感谢您抽出时间回答这个详细问题。不幸的是,我没有时间继续这个项目,最终从零开始创建了一个新项目。这也解决了上述问题。你的回复帮助我理解了Glass应用程序的流程。