所以,開始你必須做的是這樣一個活動之前:
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("launchSecondFragment", true)
startActivity(intent)
,並在您的MainActivity的onCreate()
if(getIntent().getBooleanExtra("launchSecondFragment", false)) {
//do fragment transaction to second fragment
} else {
//do fragment transaction to the first fragment
}
UPDATE
所以,這裏是聰明的做法。
首先在MainActivity.class創建枚舉
public enum FragmentNames {
FIRST_FRAGMENT,
SECOND_FRAGMENT
}
然後定義字符串常量用於獲取並把這個額外的(也是在MainActivity)
public static final String FRAGMENT_EXTRA = "fragmentExtra";
所以,現在當您啓動活動你應該做這樣的:
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra(MainActivity.FRAGMENT_EXTRA, MainActivity.FragmentNames.SECOND_FRAGMENT);
startActivity(intent);
,趕上在MainActivity onCreate()方法:
FragmentNames name = getIntent().getSerializableExtra(FRAGMENT_EXTRA);
switch(name) {
case FIRST_FRAGMENT:
//do stuff
break;
case SECOND_FRAGMENT:
//do stuff
break;
default:
//load default fragment(FirstFragment for example)
}
還有什麼關於枚舉的很酷嗎?你提到你正在使用這個意圖來定義ViewPager的當前項目。好吧,好消息,枚舉有序()。
基本上,你可以這樣做:
mViewPager.setCurrentItem(name.ordinal());
在這種情況下序()的FIRST_FRAGMENT是0和SECOND_FRAGMENT的序號爲1
只是不要忘了檢查空值: )
乾杯。
所以要啓動MainActivity _from_ SecondFragment,對不對?因爲你的代碼看起來像你想要啓動SecondFragment,如果是這種情況,那麼你應該知道碎片通常不是通過意圖啓動的,你必須改用FragmentManager。 – Kistamushken
好吧,我的MainActivity不是用戶看到的第一個活動。我們來調用這個初始活動FeedActivity。用戶點擊一個按鈕,將其啓動到MainActivity(FirstFragment)中,但我希望它直接啓動到SecondFragment。那有意義嗎? – drearypanoramic
加油吧。讓它更多一點英語...... :( –