[英]How can I launch a new Activity to a Fragment that is not the initial fragment?
我如何向不是初始片段的片段啟動新的活動? 例如,以下代碼是錯誤的。 我想在SecondFragment.class上啟動MainActivity.class。 看起來很簡單,但是無法在任何地方找到答案。 非常感謝所有幫助!
public void LaunchSecondFragment(View view) {
view.startAnimation(AnimationUtils.loadAnimation(this, R.anim.image_click));
Intent intent = new Intent(this, SecondFragment.class);
startActivity(intent);
}
因此,在開始活動之前,您必須執行以下操作:
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的當前項目。 好吧,好消息,枚舉具有ordinal()。
基本上,您可以執行以下操作:
mViewPager.setCurrentItem(name.ordinal());
在這種情況下,FIRST_FRAGMENT的ordinal()為0,SECOND_FRAGMENT的ordinal為1。
只是不要忘記檢查null :)
干杯。
嘗試以下步驟開始活動:
Intent intent = new Intent(this, MainActivity.class);
int fragmentIndex = 2;
intent.putExtra("fragment_index", fragmentIndex);
startActivity(intent);
這是針對MainActivity的onCreate
Bundle extras = getIntent().getExtras();
int fragmentIndex;
if(extras != null) {
fragmentIndex = extras.getInt("fragment_index",1);
}
switch(fragmentIndex) {
case 1:
//display fragment 1
break;
case 2:
//display fragment 2
break;
case 3:
//display fragment 3
break;
}
當用戶單擊按鈕並打開您的MainActivity
,將調用其onCreate()
。
您應該在onCreate()
添加片段事務以啟動SecondFragment
:
FragmentTransaction ft = getFragmentManager().beginTransaction();
SecondFragment secondFragment = new SecondFragment();
ft.replace(R.id.content_frame, secondFragment);
ft.commitAllowingStateLoss();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.