我有一項活動開始另一項活動。 是否必須在Android Manifest中指定父級活動? 我問這是因爲可能還有其他活動也會啓動這一個,所以我應該指定所有這些?我必須在Android Manifest中指定父級活動名稱嗎?
android:parentActivityName="com.example.myfirstapp.MainActivity"
我有一項活動開始另一項活動。 是否必須在Android Manifest中指定父級活動? 我問這是因爲可能還有其他活動也會啓動這一個,所以我應該指定所有這些?我必須在Android Manifest中指定父級活動名稱嗎?
android:parentActivityName="com.example.myfirstapp.MainActivity"
作爲每docs - >節機器人:parentActivityName:
系統讀取該屬性來確定其活性,當用戶按下操作欄中向上按鈕應啓動。系統也可以使用這些信息來與TaskStackBuilder合成一堆活動。
所以你只需要指定,如果你要使用向上導航(而不是後退按鈕導航)或TaskStackBuilder。在其他情況下,你不需要它。
入住這裏約了導航:http://developer.android.com/design/patterns/navigation.html
使用<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">
我必須將它們設置爲singleTask嗎? –
完全沒有,當一個存在的'singleTask'活動正在啓動時,堆棧中所有其他的活動將被銷燬。 –
您必須指定在其中通過故意或發射器調用清單每個活動可以設定所有其他activites,該系統能夠找到它。因此,將一個活動標記爲您的應用可以開始的啓動器並註冊您在應用中調用的所有其他活動。
如果你有一個這樣的BaseActivity:
public class BaseActivity extends Activity{}
public class MyActivity extends BaseActivity{}
比你只需要註冊MyActivity,因爲BaseActivity不是由系統,但你打電話。
如果BaseActivity和MyActivity有不同的父活動? – alex
沒有它沒有必要在manifest
指定父活動這樣
android:parentActivityName="com.example.myfirstapp.MainActivity"
爲navigationUp
你也可以使用setDisplayHomeAsUpEnabled(true);
和onSupportNavigateUp()
方法Take a Look at this
你不一定需要來定義的parentActivity
AndroidManifest.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()
。
正如你所說,清單方法創建一個新的實例,onOptionsItemSelected也不會這樣做? – matttm
哇這使得很多道理!謝謝! –