mContext.get()。getApplicationContext()和getActivity()之间的区别

时间:2015-10-31 03:29:27

标签: java android

为什么在我的片段中getActivity()有效,但mContext.getApplicationContext()没有?

mDobPickerDialog = new DatePickerDialog(getActivity(), new OnDateSetListener() {

            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                Calendar newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                mDobEditText.setText(mDateFormatter.format(newDate.getTime()));
            }

        },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));

我的mContext被声明并初始化为:

private Context mContext;

public DisplayProfileFragment(Context context) {
        super();
        mContext = context;
    }

2 个答案:

答案 0 :(得分:4)

getActivity()返回与片段关联的Activity。

http://developer.android.com/reference/android/app/Fragment.html#getActivity()

getApplicationContext()返回全局Application上下文。

http://developer.android.com/reference/android/content/Context.html#getApplicationContext()

至于为什么getApplicationContext()不能在你提供的代码中工作,因为它不应该。您正在为当前活动创建一个对话框,您需要活动上下文,应用程序上下文应该用于接收器等功能,应该在销毁应用程序时销毁的功能,而不是在活动被销毁时销毁。

答案 1 :(得分:0)

您可以使用 getActivity()获取上下文.getApplicationContext();

注意:不要在onActivityCreated()之前使用getActivity(),因为它会在此之前返回null。

因此,对于您的问题,您可以在片段的onAttach()方法中定义它。

inputFile >> studentNumber;
  

随着活动从上下文延伸。

希望它会对你有所帮助。