2013-10-06 47 views

回答

17

作爲每docs - >節機器人:parentActivityName:

系統讀取該屬性來確定其活性,當用戶按下操作欄中向上按鈕應啓動。系統也可以使用這些信息來與TaskStackBuilder合成一堆活動。

所以你只需要指定,如果你要使用向上導航(而不是後退按鈕導航)或TaskStackBuilder。在其他情況下,你不需要它。

入住這裏約了導航:http://developer.android.com/design/patterns/navigation.html

+0

哇這使得很多道理!謝謝! –

0

使用<category android:name="android.intent.category.LAUNCHER" />爲主。

例如:

<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

android:launchMode="singleTask">

+0

我必須將它們設置爲singleTask嗎? –

+0

完全沒有,當一個存在的'singleTask'活動正在啓動時,堆棧中所有其他的活動將被銷燬。 –

0

您必須指定在其中通過故意或發射器調用清單每個活動可以設定所有其他activites,該系統能夠找到它。因此,將一個活動標記爲您的應用可以開始的啓動器並註冊您在應用中調用的所有其他活動。

如果你有一個這樣的BaseActivity:

public class BaseActivity extends Activity{} 

public class MyActivity extends BaseActivity{} 

比你只需要註冊MyActivity,因爲BaseActivity不是由系統,但你打電話。

+0

如果BaseActivity和MyActivity有不同的父活動? – alex

0

沒有它沒有必要在manifest指定父活動這樣

android:parentActivityName="com.example.myfirstapp.MainActivity" 

navigationUp你也可以使用setDisplayHomeAsUpEnabled(true);onSupportNavigateUp()方法Take a Look at this

2

你不一定需要來定義的parentActivityAndroidManifest.xml。您可以使用下面的代碼啓用後導航:

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

而實現這一點:

public boolean onOptionsItemSelected(MenuItem item) { 
    int itemId = item.getItemId(); 
    if (itemId == android.R.id.home) { 
     onBackPressed(); 
    } 
    return super.onOptionsItemSelected(item); 
} 

但是,如果你定義在清單中parentActivity,然後系統會讀取這個屬性,以確定哪些活動應該在用戶按下操作欄中的向上按鈕時啓動。即它將創建parentAcivity的新實例,意味着它將調用父活動的onCreate()

+0

正如你所說,清單方法創建一個新的實例,onOptionsItemSelected也不會這樣做? – matttm

相關問題