[英]Why do I keep getting null when trying to pass a bundle from my activity to my fragment?
[英]why i getting null value in fragment using bundle
我正在使用bundle在fragment
之間進行數據傳輸,發件人部分還可以,但是在接收時,我在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();
}
});
這是我的SecondFragment.java
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
}
});
您正在創建一個新片段,而不是已經創建並傳遞參數的片段: replace(R.id.fragment_container, new EventFragment())
。
只需使用您已經創建的eventFragment
: replace(R.id.fragment_container, eventFragment)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.