可以将变量传递给另一个片段的上一个片段吗?

时间:2014-11-20 11:46:57

标签: android android-intent android-fragments

我试图将变量传递回前一个片段,类似于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更新变量时。

4 个答案:

答案 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;
}

}