如何向片段传递参数?

4

我正在尝试将一个对象传递给我的Fragment。我是这样做的:

MenuFragment fragment = new MenuFragment(item);
setFragment(fragment);

我知道使用带有 Fragment 参数的构造函数是不正确的。所以我做了这个:

public static MenuFragment newInstance(String desc) {
    MenuFragment f = new MenuFragment();
    Bundle b = new Bundle();
    b.putString("desc", desc);
    f.setArguments(b);
    return f;
}

但我不知道如何传递字符串和我的自定义对象?


想要传递哪个对象? - ρяσѕρєя K
@ ρяσѕρєя K 项目 项目。这是我的对象。 - Pavel Petrashov
2个回答

2

编辑:如果您想传递一些自定义对象,请使用

bundle.putSerializable(key, object)

方法。您的对象必须实现 java.io.Serializable 接口。

然后在您的片段中调用 getArguments() 方法:

public View onCreateView(LayoutInflater inflater,ViewGroup containerObject, Bundle savedInstanceState){
    //...

    Bundle bundle = getArguments(); 
    Myclass itemObject  = (Myclass) bundle.getSerializable("yourKey");

    //... 
 }

我知道自己。你是如何将Item对象传递到Bundle中的? - Pavel Petrashov
@PavelPetrashov 你具体是什么意思?传递对象?哪个Item对象?你的代码中没有Item对象。 - dieter
我写了一个代码示例,就像当我传递字符串时一样。现在我想传递我的对象。 - Pavel Petrashov
@好的,我改变了我的答案。让你的对象可序列化并使用bundle.putSerializable方法。 - dieter

0
在片段的 public void onCreate 函数中,执行以下操作:
if (getArguments() != null) {
    String param = getArguments().getString("desc");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接