【问题标题】:Android: passing data back to fragment using interfacesAndroid:使用接口将数据传回片段
【发布时间】:2016-01-12 08:36:27
【问题描述】:

嗨,在我的活动中,我有一个带有 textview 的 fragmentA,当我单击 textview 时,这个 fragmentA 被替换为具有列表视图的片段。现在,当我单击 litsItem 时,我必须返回到 fragmentA 并使用列表项更新 textview。

实施:

我在片段中创建了一个接口,

 public interface OnListItemSelectedListener {
            public void onListItemSelected(String msg);
        }

在 onAttach() 我有下面的代码

 @Override
    public void onAttach(Activity activity) {
        // TODO Auto-generated method stub
        super.onAttach(activity);
           try {
                mListener = (OnListItemSelectedListener) activity;
            } catch (ClassCastException e) {
                throw new ClassCastException(activity.toString() + " must implement OnListItemSelectedListener");
            }
    }

在我的列表项 OnClickListener() 我有这个

mListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    String message = parent.getItemAtPosition(position).toString();
    mListener.onListItemSelected(message);

                    }
                });

然后在我的活动中我实现了接口

@Override
    public void onListItemSelected(String msg) {
        // TODO Auto-generated method stub
        ISOFragment myFrag = (ISOFragment)
                    getSupportFragmentManager().findFragmentById(R.id.isomain);

            if (myFrag != null) {

                myFrag.incrementdata(msg);
            } else {

                ISOFragment newFrag = new ISOFragment();
               Bundle args = new Bundle();
               args.putString("selecteitem", msg);
               newFrag.setArguments(args);

                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.content_frame, newFrag);
                transaction.addToBackStack(null);
                transaction.commit();
    }

    }

现在由于 fragmentA 不可用,现在转到 else 部分,我应该如何将 bundle 参数传递给 fragmentA 并更新 textview。

假设我从 A 到 B 并从 B 回到 A,如果我在 onCreateView() 中获取参数并更新片段 A 中的文本视图,如果我第一次运行它正在检查将为空的参数。

【问题讨论】:

  • @vilpe89 嗨,如果我在 onCreateView() 中获取参数并更新片段 A 中的文本视图,并且当我第一次运行时,我将从 A 到 B 并从 B 回到 A它正在检查将为空的参数
  • 显示代码您如何尝试获取参数
  • @vilpe89 这就是我获取论点的方式。字符串 strtext=getArguments().getString("selecteitem");钻孔选择.setText(strtext);

标签: android android-fragments


【解决方案1】:

我遇到了同样的问题,对我来说最好的解决方案是扩展活动并在那里存储共享数据。我的新活动有一个获取数据函数,该函数返回一个 MyData 实现 Parcelable 类的对象(Serializeable 适用于简单数据)。数据保存在activity的onSaveInstanceState中,在activity的onCreate中恢复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-03
    • 2016-09-04
    • 2014-04-25
    • 1970-01-01
    • 2017-07-21
    • 2020-03-31
    • 2017-07-31
    • 2013-07-12
    相关资源
    最近更新 更多