需要按两次按钮才能从活动

时间:2016-02-20 11:21:56

标签: android

我有一个主要活动A(PlacesListActivity)。它从导航抽屉调用活动B(AboutMeActivity)。我已将活动A声明为清单中B的父活动。

现在,当我从A-> B开始,

  • 如果我按下操作栏中的后退箭头,则会将我带回活动A.

  • 关于硬件按钮,我必须按两次才能返回活动A.当我再按一次硬件时,没有任何反应。好像它只是重新加载活动B. 我不想要这个。按一下硬件按钮就可以完成这项工作。

活动代码B:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_about_me);
    initialize();
}

 private void initialize() {
    toolbar = (Toolbar) findViewById(R.id.toolbarAboutMe);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
   .....
 }

初始化函数只是初始化一些UI元素。

调用活动B的代码:

@Override
public void onDrawerItemSelected(View view, int position) {
    Intent i;
    switch (position) {
        case 0:
            i = new Intent(this, AboutMeActivity.class);
            startActivity(i);
            break;
            ......

清单:

<activity
        android:name="....AboutMeActivity"
        android:parentActivityName="....PlacesListActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="....PlacesListActivity" />
    </activity>

编辑:

我尝试过覆盖OnBackPressed(),但它永远不会被调用。

尝试覆盖OnKeyDown()并在其中调用finish(),但仍然需要按两次才能返回活动A.

3 个答案:

答案 0 :(得分:2)

在我的情况下,当我按下硬件后退按钮时,搜索组件确实具有焦点

这样做解决了我的问题:

override fun onResume() {
    super.onResume()
    searchInputView?.clearFocus() //searchInputView is initialized in onCreateOptionsMenu
} 

所以一般来说,确保后退按钮与活动有关,而不是活动的子组件

答案 1 :(得分:0)

也许只是覆盖onBackPressed方法。

@Override
public void onBackPressed() {
   finish();
}

还要记住BackStack

答案 2 :(得分:0)

处理活动B中的onBackPressed事件

 @Override
    public void onBackPressed() {      
            super.onBackPressed();
            finish(); // to close this activity
            //finish() or start another activity 
    }