2017-05-18 32 views
1

我的Android應用程序有以下活動流程有向上按鈕採取同樣由於Android後退按鈕

列表 - >採購 - >銷售 從上市時的項目點擊/選擇一個id傳遞給買從服務器拉取相關數據。如果用戶擁有某個商品,那麼在購買屏幕上也會出現銷售選項(這個商品的概覽翻倍)。

我面臨的問題是,當您在銷售屏幕上按下安卓後退按鈕時,您將被帶回原始狀態的購買屏幕,但是當您單擊活動中的後退箭頭(向上)在工具欄中,似乎它實際上試圖啓動一個新的活動並引發一個異常(因爲活動無法知道該id是什麼)。購買活動被列爲清單中銷售活動的父項。

我需要以某種方式使向上按鈕的行爲與此特定活動上的後退按鈕相同,或者至少以某種方式傳回該標識。

任何建議,將不勝感激。

回答

1

就在昨天我爲我的應用做了這個。這是我做過什麼:

manifest文件我刪除

<meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.example.app.MainActivity" /> 

那是我DetailsActivity的一部分。

DetailsActivity我加入這行onCreate

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

onOptionsItemSelected()方法我添加了這些行

if (item.getItemId() == android.R.id.home) { 
      onBackPressed(); 
     } 

不知道這是處理這一目標的最佳方式,但噢以及它工作:)

+0

感謝您抽空迴應幫我解決我的問題的時間。這就是我一直在尋找的東西。 – Shaun

2

如果您使用的是ActionBar(平臺或AppCompat)覆蓋以下方法您希望返回的活動。

@Override 
public boolean onOptionsItemSelected(@NonNull final MenuItem item) { 
    final int id = item.getItemId(); 
    if (id == android.R.id.home) { 
     onBackPressed(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

這應該是安全的,可以在簡單的導航層次中使用,比如你的。

1

在你的活動,onOptionsItemSelected()方法獲取點擊的項目id,如果idandroid.R.id.home然後就finish()當前活動。

試試這個:

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch(item.getItemId()) 
    { 
    case android.R.id.home: 
     finish(); 
     return true; 

    default: 
     return super.onOptionsItemSelected(item); 

    } 
}