【问题标题】:Pass data from Firebase from one fragment to another将 Firebase 中的数据从一个片段传递到另一个片段
【发布时间】:2018-04-16 09:04:46
【问题描述】:

我正在尝试将来自 Firebase 的 CategoryID 从一个片段传递到另一个片段 使用 ImageView Click 但我的应用程序在单击 ImageView 时崩溃。

这是我的代码;

MenuFragment.java

FirebaseRecyclerAdapter<Category, MenuViewHolder> adapter;

viewHolder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onClick(View view, int position, boolean isLongClick) {

                   CarListFragment cfragment= new CarListFragment ();
                    Bundle bundle = new Bundle();
                    bundle.putString("CategoryID",adapter.getRef(position).getKey());
                    cfragment.setArguments(bundle);

                    getFragmentManager().beginTransaction()
                            .replace(R.id.frame_main, cfragment, cfragment.getTag())
                            .addToBackStack(null)
                            .commit();
                }
            });

CarListFragment.java

String CategoryID="";

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v= inflater.inflate(R.layout.fragment_car_list, container, false);


    Bundle bundle = this.getArguments();
    if (bundle != null) {
        CategoryID=getActivity().getIntent().getStringExtra("CategoryID");
    }


    if(!CategoryID.isEmpty()&& CategoryID!=null){
        loadCarList(CategoryID);
    }


    return v;
}

Logcat

【问题讨论】:

  • 请以文字而非图片的形式发布日志

标签: android android-studio firebase android-fragments


【解决方案1】:

使用这个:

    CarListFragment cfragment= new CarListFragment ();
                    Bundle bundle = new Bundle();
                    bundle.putString("CategoryID", adapter.getRef(position));
                    cfragment.setArguments(bundle);

                    getFragmentManager().beginTransaction()
                            .replace(R.id.frame_main, cfragment, cfragment.getTag())
                            .addToBackStack(null)
                            .commit();

获取字符串:

    String str = getArguments().getString("my_string");

【讨论】:

  • 只是一个使用示例
  • 如果你更方便我可以改
  • 是的,请这样做。
  • 准备好了。请检查
【解决方案2】:

使用bundle因为它有数据

Bundle bundle = this.getArguments();
if (bundle != null) {
    CategoryID = bundle.getString("CategoryID");
    //           ^^^^^^
}

而不是

CategoryID=getActivity().getIntent().getStringExtra("CategoryID");

因为getActivity().getIntent() 会给您一个Intent 对象,该对象以前用于启动您的活动

【讨论】:

  • @FionaMuthoni 我很高兴能帮上忙,编码愉快
猜你喜欢
  • 1970-01-01
  • 2015-01-14
  • 1970-01-01
  • 2016-06-12
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多