如何在片段的onCreateView中调用活动类

时间:2012-10-23 06:49:23

标签: android android-fragments

我有这样的代码

public class fragment2 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


    return inflater.inflate(R.layout.content, container, false);
}

}

我想调用活动类而不是布局。 请帮帮我。

3 个答案:

答案 0 :(得分:0)

以下链接通过活动讨论两个片段之间的通信..

http://developer.android.com/training/basics/fragments/communicating.html

可以使用相同的示例与片段中的活动进行通信。

答案 1 :(得分:0)

例如,如果您有名为MyActivity和MyFragment的活动和片段, 您可以在MyActivity中提供一些公共方法。在MyFragment#onCreateView()之后 你可以打电话  String layout = ((MyActivity)getActivity()).getMyLayoutLink()

答案 2 :(得分:0)

您可以在片段中创建一个接口,然后在活动中实现它。然后,您可以在片段onAttach()方法中设置侦听器。这是在onCreateView()之前调用的。此模式使您的代码可重用,并且此技术可以应用于您使用的所有活动和片段。片段的示例代码:

public class YourFragment extends Fragment {

    private OnItemSelectedListener onClickListener;

    public interface OnItemSelectedListener {
      //implement and use this function in your calling activity
      public void yourItemSelected(String link);
    }

    @Override
    public void onAttach(Activity activity) {
      super.onAttach(activity);
      //check that the activity implements the interface
      if (activity instanceof OnItemSelectedListener) {
        //set the listener to the calling activity
        onClickListener = (OnItemSelectedListener) activity;
      } else {
        throw new ClassCastException(activity.toString()
        + " must implement YourFragment.OnItemSelectedListener");
      }
    }

}

有关更多信息,请参阅android文档: http://developer.android.com/training/basics/fragments/communicating.html
http://developer.android.com/guide/components/fragments.html#Lifecycle