我有一个FragmentActivity,它具有我需要在片段中使用的值。
这是我的方式,但我不知道如何访问FragmentActivity中的getter。
ItemDetailActivity
public class ItemDetailActivity extends FragmentActivity implements ActionBar.TabListener {
public String getItem_id() {
return item_id;
}
public String getUser_id() {
return user_id;
}
...
}
ItemPhotosFragment
public class ItemPhotosFragment extends Fragment {
public ItemPhotosFragment() {
user_id = getActivity().getUser_id();
}
}
正如你在FragmentActivity中看到的那样,我实现了TabListener。因此,我想将值传递给所有标签(片段)。
我该怎么做?从getActivity访问是一种最佳实践,因为我在这里看到了一些解决方案。
答案 0 :(得分:4)
输入强制转换为父活动:
在片段内的onActivityCreated
中编写此代码,而不是在构造函数中编写:
user_id =((ItemDetailActivity )getActivity()).getUser_id();
这是关于片段的life-cycle。当片段成为活动的一部分时调用onActivityCreated
,这是getActivity()不返回null的第一个回调
答案 1 :(得分:1)
有两种方法可以做到这一点:
myFragment.setArguments(Bundle bundle)
,然后将params放入此捆绑包中。答案 2 :(得分:1)
以上提供的解决方案很好。我认为可以使用委托模式以更清洁的方式完成相同的工作。 这是这个的链接。 http://developer.android.com/training/basics/fragments/communicating.html#DefineInterface