2014-11-03 71 views
0

想象一下存在片段A和片段B.如果我單擊片段A上的按鈕,它會導致片段C.如果我單擊片段B上的按鈕,它也會導致片段C. 現在我想檢測從哪個片段創建片段C.可能嗎?確定當前片段前的片段

+0

你想在哪裏檢查片段C? – 2014-11-03 10:55:56

+0

在片段C – stephen1706 2014-11-03 10:58:14

回答

2

您可以簡單地設置一個變量,並傳遞給C片段通過捆綁而做這樣的FragmentTransaction如圖

Fragment fr=new FragmentA(); 
FragmentManager fm=getFragmentManager(); 
FragmentTransaction ft=fm.beginTransaction(); 
Bundle args = new Bundle(); 
args.putString("from", "fragmentA"); 
fr.setArguments(args); 
ft.replace(R.id.content_frame, fr); 
ft.commit(); 

,你可以檢索同在C片段這樣

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    String strtext = getArguments().getString("from"); // with value of strtext,you will get to know from which fragment you come from 
    return inflater.inflate(R.layout.fragment, container, false); 
} 
+0

中檢查一個函數是否有任何方法來檢測它使用回棧或類似的東西?因爲可能有很多其他片段導致片段C – stephen1706 2014-11-03 11:28:38

+0

因此,當您將事務處理爲片段C並且片段C中的代碼始終保持相同時,您每次只需複製粘貼此代碼。如果你不想這樣,你可以在你的偏好設置一個變量,然後用它來區分片段C中的不同片段 – 2014-11-03 11:43:34

1
##You can pass a boolean value and toggle between two fragments.## 
Bundle args = new Bundle(); 
args.putBoolean("key",true) // for fragement A 
fr.setArguments(args); 
ft.replace(R.id.content_frame, fr); 
ft.commit(); 
if(getArguments().getBoolean("key");) 
Log.e(LOGTAG,"FROM FRAGMENT A"); 
else 
Log.e(LOGTAG,"FROM FRAGMENT B");