2015-10-10 54 views
1

使用支持版本的NavUtils(import android.support.v4.app.NavUtils),在調用NavUtils.getParentActivityIntent()時,api 16+覆蓋getParentActivityIntent()方法會正確觸發。但是,在api 15及以下版本中,既不支持也不支持標準方法:Android NavUtils沒有觸發getSupportParentActivityIntent api 15

public void onUp() { 
    Intent parentIntent = NavUtils.getParentActivityIntent(this); 
    ... 
} 

@Override 
public Intent getParentActivityIntent() { 
    //fires in api 16+ 
    return super.getParentActivityIntent(); 
} 

@Override 
public Intent getSupportParentActivityIntent() { 
    // never fires 
    return super.getSupportParentActivityIntent(); 
} 

此處有任何建議嗎?

回答

3

getSupportParentActivityIntent()每當向上按鈕,在您的ActionBar/Toolbar所看到in the source壓制得到來自onSupportNavigateUp()叫,默認情況下被調用。它會自動爲您創建TaskStackBuilder,根據需要調用其他支持方法,如onSupportNavigateUp() source code中所示。

如果您未使用標準ActionBarToolbarsetSupportActionBar(),則可以直接撥打onSupportNavigateUp()

+0

因此,如果沒有在清單中聲明父活動,那麼'NavUtils.navigateUpTo(activity,upIntent);'預計不會工作? – mdelolmo

+0

@mdelolmo - 我不確定你的意思。 'upIntent'是從清單條目創建的 - 如果你提供了自己的'upIntent',那麼清單條目根本就不涉及。 – ianhanniballake

+0

讓我詳細說明一下: 如果我的活動沒有以任何方式在清單中聲明'PARENT_ACTIVITY'' '元素,而是重寫'getParentActivityIntent()'和'getSupportParentActivityIntent()'來提供父活動意圖。將'NavUtils.navigateUpTo(activity,upIntent);'返回父目標? 根據[文檔](http://developer.android.com/reference/android/support/v4/app/NavUtils.html),不一定。 我只是好奇,因爲我最終直接使用'onSupportNavigateUp()'。 – mdelolmo