Android工作室在2个片段之间传递数据!得到一个错误

时间:2015-12-12 21:21:13

标签: android android-fragments

我有2个片段,它们被替换为主活动布局中的容器。只要单击按钮,一个片段就会通过接口传递数据。当我单击按钮时,我希望在同一容器中将第一个片段替换为第二个片段。但是,我有一个问题......

在第二个片段中,我需要获取数据并在视图上使用它。现在,在第二个片段中,我有一个获取数据的方法。在活动中,我知道我需要找到第二个片段的ID才能使用它的方法。但是,这个片段没有任何ID(因为我通过代码遍历片段)。由于我找不到片段的ID,我收到错误,我无法将数据传递给第二个片段。

如何解决这个问题?可以解决吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

如果您使用XML布局,则可以通过ID获取片段。

如果您在代码中处理片段,则可以使用TAG并按此查找。

启动片段

int* test = get_value<int>(foobar, "foo", "bar");

通过标签获取片段

String FRAGMENT_TAG = "myFragment";
FragmentManager manager = getSupportFragmentManager();

manager.beginTransaction().add(R.id.container, new MyFragment(), FRAGMENT_TAG).commit();

答案 1 :(得分:0)

你应该为fragment参数定义一个静态常量,然后从第二个片段调用newInstance来初始化第一个片段并将数据从1传递给2

以下代码是上述说明的示例:

private static final String ARG_DATE = "date";

   public static DatePickerFragment newInstance(Date date) {
        Bundle args = new Bundle();
        args.putSerializable(ARG_DATE, date);

        DatePickerFragment fragment = new DatePickerFragment();
        fragment.setArguments(args);
        return fragment;
    }

检索/解析DatePickerFragment参数数据:

Date date = (Date) getArguments().getSerializable(ARG_DATE);

在另一个xxxFragment中初始化Fragment(这意味着将犯罪的日期数据从xxFragment传递到DatePickerFragment):

DatePickerFragment dialog = DatePickerFragment.newInstance(mCrime.getDate());

您可以查看我的github存储库以了解%100

[https://github.com/Zfr21/CriminalIntent/commit/2ed69c056988818f6f6423762c97a6bf1a82b547][1]