Java 为什么我使用bundle在片段中获取空值
我正在使用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中得到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