2016-02-20 83 views
5

我有一個主要活動A(PlacesListActivity)。它從導航抽屜中調用活動B(AboutMe活動)。我已經宣佈活動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.

+2

是活動B的Softkeyboard主動或在一些其他的重點則活動本身?如果你在Activity B中重寫OnBackPressed(),它應該在焦點活動時工作得很好。 – Manu

+0

你解決了這個問題嗎? – VLeonovs

回答

1

在我的情況下,搜索組件確實有焦點,當我按下硬件後退按鈕

這樣做解決了我的問題:

所以一般來講,可以肯定的是,後退按鈕correclty由活動逮住,而不是由您的活動的一個子

0

也許只是覆蓋onBackPressed方法。

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

還銘記保持BackStack

+0

編輯我的問題。 – Yashasvi

0

手柄onBackPressed事件在活動B

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

編輯我的問題。 – Yashasvi