Android - 如何从Fragment访问父Activity中的getter方法

时间:2014-01-21 08:12:21

标签: java android android-fragments

我有一个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访问是一种最佳实践,因为我在这里看到了一些解决方案。

3 个答案:

答案 0 :(得分:4)

输入强制转换为父活动:

在片段内的onActivityCreated中编写此代码,而不是在构造函数中编写:

user_id =((ItemDetailActivity )getActivity()).getUser_id();

这是关于片段的life-cycle。当片段成为活动的一部分时调用onActivityCreated,这是getActivity()不返回null的第一个回调

答案 1 :(得分:1)

有两种方法可以做到这一点:

  1. 在活动中初始化片段时,您可以执行myFragment.setArguments(Bundle bundle),然后将params放入此捆绑包中。
  2. 上面的例子中提到了另一种方式。

答案 2 :(得分:1)

以上提供的解决方案很好。我认为可以使用委托模式以更清洁的方式完成相同的工作。 这是这个的链接。 http://developer.android.com/training/basics/fragments/communicating.html#DefineInterface