onRequestPermissionsResult не вызывается во фрагменте диалога

Я начал работать на Android M разрешение времени выполнения. Здесь я сталкиваюсь с вопросом, что еслиrequestPermissions вызывается изDialog Fragment класс тогдаonRequestPermissionsResult не получить вызов в том жеDialog fragment учебный класс. Но еслиrequestPermissions вызывается изActivity класс илиFragment класс тогдаonRequestPermissionsResult метод вызывается в том же классе.

Вот мой пример кода:

public class ContactPickerDialog extends DialogFragment {
    private static final int READ_CONTACTS_REQUEST_CODE = 12;
    private Context mContext;

    private void loadContact() {
        if(hasPermission(mContext, Manifest.permission.READ_CONTACTS)){
            new ContactSyncTask().execute();
        } else {
            this.requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, READ_CONTACTS_REQUEST_CODE);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        Logger.d("TAG", "dialog onRequestPermissionsResult");
        switch (requestCode) {
            case READ_CONTACTS_REQUEST_CODE:
                // Check Permissions Granted or not
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    new ContactSyncTask().execute();
                } else {
                    // Permission Denied
                    Toast.makeText(getActivity(), "Read contact permission is denied", Toast.LENGTH_SHORT).show();
                }
            break;
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }

    private static boolean hasPermission(Context context, String permission){
        return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
    }

} 

Здесь в коде я звонюrequestPermissions методDialog Fragment учебный класс. Так что я ожидаю получить результат в том же классе.

Любая помощь приветствуется. Заранее спасибо!

РЕДАКТИРОВАТЬ: Здесь я добавляю больше деталей, чтобы они были более полезными для других. Ранее я использовал getChildFragmentManager (), чтобы показать DialogFragment.

ContactPickerDialog dialog = new ContactPickerDialog();
dialog.show(getChildFragmentManager(), "Contact Picker");

Но, как@CommonWare попросил меня использовать активность, чтобы показать DialogFragment. Я сделал следующие изменения, и это работает.

ContactPickerDialog dialog = new ContactPickerDialog();
dialog.show(getActivity().getSupportFragmentManager(), "Contact Picker");

Ответы на вопрос(10)

Ваш ответ на вопрос