android - 如何在两个 fragment 之间传递数据?

标签 android android-fragments

我有两个 Activity 和两个 fragment :detialActivity 和 detialActivityFragment、mainActivity 和 mainActivityFragment。 我如何在 detialActivityFragment 和 mainActivityFragment 之间传递数据。 当我尝试传递数据时显示异常:java.lang.NullPointerException 我做了界面:

  public interface OnButtonPressListener { 
        public void onButtonPressed(String msg);
    }

在类 mainActivityFragment 中:

 @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);
           try {
                buttonListener = (OnButtonPressListener) getActivity();
            } catch (ClassCastException e) {
                throw new ClassCastException(activity.toString() + " must 
                implement onButtonPressed");
            }
        }

  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_main, container, 
        false);
        listMovie = (GridView) root.findViewById(R.id.gridview_movie);

        listMovie.setOnItemClickListener(new  AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                buttonListener.onButtonPressed("hi");
            }
        });
        return root;
    }

内部类 detialActivityFragment:

void setMessage(String msg){
   TextView txt=(TextView)root.findViewById(R.id.titleDetialMovie);
   txt.setText(msg);
}

内部类 detialActivity:

 @Override
    public void onButtonPressed(String msg) {
        DetialActivityFragment Obj=(DetialActivityFragment)                   
   getSupportFragmentManager().findFragmentById(R.id.detialActivityFragment);
        Obj.setMessage(msg);
    }

最佳答案

你不应该这样调用方法。 而是将数据传递给 Fragment 的构造函数并在那里使用它。

关于android - 如何在两个 fragment 之间传递数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32137767/

相关文章:

android - 将多个 View 添加到 LinearLayout 的最快方法是什么?

android - Fragment.isVisible() 返回 false,即使 Fragment 添加并可见

android - fragment 未添加到后台堆栈

android - 如何使抽屉导航中的特定项目显示为选中状态?

java - Android apk 编译构建后如何添加资源文件?

android - 无法在Android Studio上运行程序flutter.bat

java - Android中如何设置图片目录名?

非开发人员帐户的 Android Facebook 共享对话框在几秒钟后消失

android - fragment 中未调用 OnCreateOptionsMenu()

android - 二进制 XML 文件行 # : Error inflating class fragment : Only on Android (6. 0)-Marshmallow