我有2个片段,它们被替换为主活动布局中的容器。只要单击按钮,一个片段就会通过接口传递数据。当我单击按钮时,我希望在同一容器中将第一个片段替换为第二个片段。但是,我有一个问题......
在第二个片段中,我需要获取数据并在视图上使用它。现在,在第二个片段中,我有一个获取数据的方法。在活动中,我知道我需要找到第二个片段的ID才能使用它的方法。但是,这个片段没有任何ID(因为我通过代码遍历片段)。由于我找不到片段的ID,我收到错误,我无法将数据传递给第二个片段。
如何解决这个问题?可以解决吗?
非常感谢!
答案 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]