2013-10-25 41 views
0

我有一個活動,有一些按鈕和一些片段。Android - 如何返回onActivityResult()後的當前片段?

如果我點擊按鈕A,我會顯示Fragment「FragA」。當我在「FragA」中時,我可以執行一些操作,比如從圖庫中選擇圖片,選擇圖片後我需要留在「FragA」中。

但是,當我選擇圖片時,我返回到活動並隱藏「FragA」。

如何執行一個動作,並仍然在同一個片段或在活動中顯示正確的片段?

回答

1

您可以再次重新片段,並使用此代碼的修改替換它在你的活動:

if (currentState == STATE_MAIN_FRAGMENT) { 
     return; 
} 
mainScreenFragment = (MainScreenFragment) getSupportFragmentManager().findFragmentByTag(MainScreenFragment.TAG); 
if (mainScreenFragment == null) { 
    mainScreenFragment = new MainScreenFragment(); 
} 
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
fragmentTransaction.replace(R.id.flFragmentContainer, mainScreenFragment, MainScreenFragment.TAG); 
fragmentTransaction.commit(); 

第一「如果」檢查是否片段設置與否。這不是必需的,但這是一個很好的做法。它可以防止你在沒有必要時更換片段。

對我來說有一件奇怪的事情。因爲你說< <「FragA」隱藏>> - 這意味着它已經設置,但容器不可見?然後yourFragmentContainer.setVisiblity(View.VISIBLE);在活動結果。

而最後一件可以幫助你的是保留這個片段,這樣它就不會再被破壞和重新創建。一些有用的鏈接:

Understanding Fragment's setRetainInstance(boolean)

http://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)


或者你也可以複製粘貼的是在你的按鈕的OnClickListener所以它發生onActivityResult了。

+0

不錯!我已經做了一些關閉你!我創建了一個名爲'ACTIVE_FRAGMENT'的int,並在點擊按鈕時輸入值,之後我在onResumeFragments()中檢查它。謝謝哥們! – placplacboom