簡體   English   中英

為什么我在使用包的片段中獲取空值

[英]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())

只需使用您已經創建的eventFragmentreplace(R.id.fragment_container, eventFragment)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM