簡體   English   中英

如何從Android中的活動中獲取數據以碎片化?

[英]How to get data from activity to fragment in android?

我在我的項目中使用了導航抽屜,並且“添加”功能處於由fab調用的活動中。 我需要從“活動”到“片段”中獲取數據。

我已經嘗試使用捆綁軟件,並且應用程序崩潰。

在我的活動中,AddTodoActivity.java文件->

date.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //showDatePicker();
            Bundle bundle = new Bundle();
            bundle.putString("1", "From Activity");
            FragmentList fragobj = new FragmentList();
            fragobj.setArguments(bundle);

            Fragment fragment = new FragmentList();
            if (fragment != null) {
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction ft = fragmentManager.beginTransaction();
                ft.replace(R.id.screen, fragment);
                ft.commit();
            }

            finish();
        }
    });

在myfragment中,FragmentList.java文件->

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    Toast.makeText(this.getContext(),  this.getArguments().getString("1"), Toast.LENGTH_SHORT).show();
    ....

那里有FragmentList兩個實例: fragobjfragment

您使用fragobj.setArguments() ,然后將fragment傳遞給FragmentManager。

我真的不知道為什么要這樣做,但是如果要傳遞參數,則需要刪除其中一個實例,然后將參數設置為剩下的一個。 我建議只刪除fragment之一:

//...
FragmentList fragobj = new FragmentList();
fragobj.setArguments(bundle);

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.screen, fragobj);
fr.commit();
//...

片段的空檢查也是不必要的。 它不可能為空。

暫無
暫無

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

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