当前位置: 首页 > 面试题库 >

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

谭宜
2023-03-14
问题内容

为什么在我的片段中,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;
    }

问题答案:

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()在提供的代码中不起作用,因为它不起作用。您正在针对当前活动创建一个对话框,为此需要活动上下文,应将应用程序上下文用于接收器之类的功能,应在销毁应用程序而不是在销毁活动时销毁功能。



 类似资料: