所以,开始你必须做的是这样一个活动之前:
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
加油吧。让它更多一点英语...... :( –