在Fragment类中使用Activity方法

时间:2015-10-09 14:16:01

标签: android android-fragments

我是Fragment中的新手,我正在尝试在Fragment类中使用Activity方法。那么请帮助我如何在Fragment中使用Activity方法。以及我如何在Fragment中使用List<NameValuePair>SharedPreferences

public class DashboardFragment extends Fragment  {

        public DashboardFragment() {
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.fragment_dashboard, container, false);

            return rootView;
        }

这是片段代码,我想在此使用Activity方法。所以,请帮助我在这部分是新的。如果还有其他方法,请告诉我。

4 个答案:

答案 0 :(得分:0)

1)您可以在Fragment中使用getActivity()方法获取Activity实例:

Activity activity = getActivity();

然后您可以使用实例调用任何Activity方法:

activity.method();

2)关于SharedPreferences,您还可以在Fragment中使用getContext()方法获取Context实例。

Context context = getContext();

所以你可以用实例调用getSharedPreferences()方法:

SharedPreferences sharedPreferences = context.getSharedPreferences(String name, int mode);

3)List<T>是一个纯Java类。所以你可以在Fragment中使用它而没有任何限制。

答案 1 :(得分:0)

在调用片段的onAttach方法后(请参阅Fragment lifecycle),您可以通过片段getActivity()方法获取对活动的引用。然后,您可以将此引用转换为您的活动类型并调用方法:

((MyActivity)getActivity()).method();

答案 2 :(得分:0)

您的活动方法需要是静态的和公开的。然后你可以在片段中进行以下操作:

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    if (activity instanceof MyActivity) {
        this.activity = activity;
        sharedPreferences = activity.getSharedPreferences(...);
    }
}

在片段中声明MyActivity activity

然后你可以在另一个地方拨打activity.yourMethod()。别忘了检查活动是否为空。

答案 3 :(得分:0)

为此使用接口实现。像这样的事情:

的活动:

MyActivity extends AppCompatActivity implements CallBack {

  @Override
  public void onCallBack() {
    // do something
  }

}

和碎片:

MyFragment extends Fragment {

  public interface CallBack {

    void onCallBack();    

  }

  private CallBack callBack;

  @Override
  public void onAttach(Activity context) {
    callBack = (CallBack) activity;
  }

  // when clicking or whatever it takes to call
  callBack.onCallBack();

}