我试图将变量传递回前一个片段,类似于startActivityForResult但是有片段,这可能吗?
我正在使用的代码调用片段是这样的:
FragmentFullScreen fragment = new FragmentFullScreen();
Bundle args = new Bundle();
args.putParcelable(ARG_VIDEO_SELECTED, mVideoSelected);
fragment.setArguments(args);
getFragmentManager().beginTransaction()
.replace(R.id.container, FragmentFullScreen.newInstance(mVideoSelected))
.addToBackStack("FragmentDetails")
.commit();
然后我使用popBackStack转到上一个片段:
getFragmentManager().popBackStack();
当我想要从Previous Fragment更新变量时。
答案 0 :(得分:1)
您可以在第一个片段中实现Observable对象并创建Observer,它可以通过Application类或Activity共享。
然后在你的第二个片段中,你从应用程序获得这个Observer并更新数据。 如果您的第一个片段仍然存在,您的变量将被传递到那里。
http://developer.android.com/reference/java/util/Observer.html http://developer.android.com/reference/java/util/Observable.html
答案 1 :(得分:0)
Bundle args = new Bundle();
args.putParcelable(ARG_VIDEO_SELECTED, mVideoSelected);
fragment.setArguments(args);
将此变量放在'args'中(只是一个键值映射)。就像:
args.putExtra("id", id);
args.putExtra("parcelable", p)
答案 2 :(得分:0)
片段之间的通信应该通过活动完成。为了在片段和活动之间实现这种沟通,这是http://developer.android.com/guide/topics/fundamentals/fragments.html#CommunicatingWithActivity的最佳方式。
答案 3 :(得分:-2)
这样做很酷的方法是创建一个单例类:
public class Singleton {
private static Singleton mInstance = null;
private int mVar;
private Singleton() {
if (mInstance == null) {
mInstance = new Singleton();
}
return mInstance;
}
public static getInstance () {
return mInstance;
}
public int getVar () {
return mVar;
}
public void setVar (int val) {
mVar = val;
}
}