Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我使用bundle在片段中获取空值_Java_Android_Android Fragments - Fatal编程技术网

Java 为什么我使用bundle在片段中获取空值

Java 为什么我使用bundle在片段中获取空值,java,android,android-fragments,Java,Android,Android Fragments,我正在使用bundle在片段之间进行数据传输,发送方部分正常 但是在接收时,我在bundle中得到null值 我已经尝试了一切,我没有发现任何错误,但仍然没有得到 我已经试过了所有可能的解决办法。请让我知道我在这里犯了什么错误 在第一个片段中,我发送对象类型数据和int类型数据 FirsrtFragment.java lay_upcoming.setOnClickListener(new View.OnClickListener() { @Override

我正在使用bundle在
片段
之间进行数据传输,发送方部分正常 但是在接收时,我在bundle中得到
null

我已经尝试了一切,我没有发现任何错误,但仍然没有得到 我已经试过了所有可能的解决办法。请让我知道我在这里犯了什么错误

在第一个片段中,我发送对象类型数据和int类型数据

FirsrtFragment.java

       lay_upcoming.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            bundle = new Bundle();
            eventFragment = new EventFragment();
            bundle.putInt("img_id", img_id2);
            eventFragment.setArguments(bundle);

            getFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_in_up, R.anim.slide_out_up).addToBackStack(null).replace(R.id.fragment_container, new EventFragment()).commit();
        }
    });
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    intiView();

    View v = inflater.inflate(R.layout.event_detail_fragment, container, false);
    bundle = getArguments();
    if (bundle != null) {
        img_id = getArguments().getInt("img_id");

    } else {
        Toast.makeText(getContext(), "Bundle is Null", Toast.LENGTH_SHORT).show();
    }
    ButterKnife.bind(this, v);
    return v;
}
这是我的第二个fragment.java

       lay_upcoming.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            bundle = new Bundle();
            eventFragment = new EventFragment();
            bundle.putInt("img_id", img_id2);
            eventFragment.setArguments(bundle);

            getFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_in_up, R.anim.slide_out_up).addToBackStack(null).replace(R.id.fragment_container, new EventFragment()).commit();
        }
    });
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    intiView();

    View v = inflater.inflate(R.layout.event_detail_fragment, container, false);
    bundle = getArguments();
    if (bundle != null) {
        img_id = getArguments().getInt("img_id");

    } else {
        Toast.makeText(getContext(), "Bundle is Null", Toast.LENGTH_SHORT).show();
    }
    ButterKnife.bind(this, v);
    return v;
}

您需要将片段传递到设置包的位置。但是你正在使用一个新的片段。更改代码如下

lay_upcoming.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        bundle = new Bundle();
        eventFragment = new EventFragment();
        bundle.putSerializable("Data", (Serializable) data2);
        Log.i("DAta", String.valueOf(img_id2));
        Log.i("DAta", String.valueOf(img_id2));
        bundle.putInt("img_id", img_id2);
        eventFragment.setArguments(bungetFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_in_up, R.anim.slide_out_up).addToBackStack(null).replace(R.id.fragment_container, eventFragment).commit(); // change new EventFragment() to eventFragment
    }
});

您需要将片段传递到设置包的位置。但是你正在使用一个新的片段。更改代码如下

lay_upcoming.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        bundle = new Bundle();
        eventFragment = new EventFragment();
        bundle.putSerializable("Data", (Serializable) data2);
        Log.i("DAta", String.valueOf(img_id2));
        Log.i("DAta", String.valueOf(img_id2));
        bundle.putInt("img_id", img_id2);
        eventFragment.setArguments(bungetFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_in_up, R.anim.slide_out_up).addToBackStack(null).replace(R.id.fragment_container, eventFragment).commit(); // change new EventFragment() to eventFragment
    }
});

您正在创建一个新片段,而不是已经创建并传递参数的片段:
replace(R.id.fragment\u容器,new EventFragment())


只需使用您已经创建的
eventFragment
替换(R.id.fragment\u容器,eventFragment)您正在创建一个新片段,而不是您已经创建并传递参数的片段:
替换(R.id.fragment\u容器,new eventFragment())


只需使用您已经创建的
eventFragment
replace(R.id.fragment\u容器,eventFragment)

从哪里获得空值?您可以发布错误日志吗?在SecondFragment.java中,如果条件为它显示bundle=null,您从哪里获得null值?你能在SecondFragment.java中发布错误日志吗?如果条件是它显示bundle=null