0

我有一個應用程序與幾個活動。到現在爲止,我在它們之間有一個「硬編碼」層次結構,所以我在每個(但是啓動器活動)中明確設置了android:parentActivityName。但是現在我將設置添加到多個活動的菜單中。有沒有辦法讓AppCompat的ActionBar的「back/up」按鈕充當「後退」系統按鈕

有沒有辦法讓操作欄功能中的「後退」箭頭作爲系統後退按鈕(在屏幕的底部)?換句話說:如果有一個parentActivityName集,然後它可以追溯到父活動,如果沒有,那麼它會關閉活動,「蝸居」在過去的活動。

這是我嘗試過,但不起作用。如果我不叫actionBar.setDisplayHomeAsUpEnabled(真),那麼就在操作欄中沒有「返回」箭頭,但如果我把它在沒有parentActivityName請將清單的活動,然後我得到一個異常時,我點擊箭頭。

abstract public class BaseActivity extends ActionBarActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(getLayoutResourceId()); 

     final ActionBar actionBar = getSupportActionBar(); 
     if (null != actionBar) { 
      actionBar.setDisplayHomeAsUpEnabled(getDisplayHomeAsUpEnabled()); 
     } 
    } 

    protected abstract int getLayoutResourceId(); 
    abstract protected boolean getDisplayHomeAsUpEnabled(); 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     final int id = item.getItemId(); 
     if (id == android.R.id.home) { 
      NavUtils.navigateUpFromSameTask(this); 
      return true; 
     } 
    } 
} 

回答

3

嘗試:

if (id == android.R.id.home) { 
     onBackPressed(); 
     return true; 
    } 

上面的代碼會打電話給你onBackPressed,所以要小心,如果你overrided它。否則,它將與「後退」系統按鈕相同。

+0

這仍然無法幫助我顯示android:parentActivityName沒有在清單中設置 – Gavriel 2014-12-02 08:22:43

+0

@Gavriel我不使用'android:parentActivity',我只是使用'setDisplayHomeAsUpEnabled(true);'與上面的代碼它的工作就像後面的系統按鈕 – 2014-12-02 08:30:39

+0

好吧,它實際上工作。現在我可以在每個活動上調用actionBar.setDisplayHomeAsUpEnabled(true)。 – Gavriel 2014-12-02 08:30:40

相關問題