android-fragments 如何在Android中将字符串从一个片段传递到另一个片段

cqoc49vn  于 2022-11-14  发布在  Android
关注(0)|答案(2)|浏览(122)

我有两个片段,我想发送fragment2字符串到fragment1,并将其存储在fragment1中的字符串中。当我尝试以正常方式执行此操作时,它显示了一个错误,我已将其发布下来。有人请帮助我。
Fragment2.class

Bundle bundle=new Bundle();
bundle.putString("message", value);//value= my value from code
Fragmentclass2 frag2=new Fragmentclass2();
frag2.setArguments(bundle);

Fragment1.class

final String store= getArguments().getString("message");

错误日志:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
pw9qyyiw

pw9qyyiw1#

我建议使用这种方式

当你传递第一个片段的数据时

val bundle = Bundle()
bundle.putString(Constants.ROOM," room")

val fragment= GroupRoomDevicesFragment()
fragment.arguments=bundle
getChildFragmentManager().beginTransaction()
            .replace(R.id.fl_automate, fragment)
            .addToBackStack("name")
            .commit()

当你从另一个片段中获取数据时

var screentext=requireArguments().getString(Constants.ROOM)
rsl1atfo

rsl1atfo2#

我建议您使用newInstance()片段的一般做法。
因此,您应该考虑在Fragmentclass1中创建newInstance()方法,如下所示:

public static Fragmentclass1 newInstance(String value) {
    Fragmentclass1 fragmentclass1 = new Fragmentclass1();

    Bundle args = new Bundle();
    args.putString("message", value);
    fragmentclass1.setArguments(args);

    return fragmentclass1;
}

在您的Fragmentclass2中,您调用:

Fragmentclass1.newInstance("YOUR_MESSAGE")

这将创建Fragmentclass1,所以最后要做的是检索Fragmentclass1的onCreate中的参数。就像你刚才做的那样:

final String store= getArguments().getString("message");

相关问题