2014-11-03 72 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");