2016-07-25 24 views
1

私は、フラグメントを含むアクティビティを持っています。次のように私は活動からのコンタクト許可を要求しています:Android onRequestPermissionsResultがアクティビティでのみ呼び出されましたが、フラグメントでは呼び出されません

ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_CONTACTS}, REQUEST_CODE_PERMISSION);

をフラグメントから私はこのようなカメラの権限を要求しています:私はフラグメントとの両方でonRequestPermissionsResultメソッドを持って

requestPermissions(new String[] {Manifest.permission.CAMERA}, REQUEST_CODE_PERMISSION);

をアクティビティ。問題は、フラグメントからの許可を要求しても、アクティビティのonRequestPermissionsResultが呼び出されるということです。フラグメントからのonRequestPermissionsResultは呼び出されません(アクティビティからonRequestPermissionsResultを削除すると呼び出されます)。適切な方法はありますかonRequestPermissionsResult方法はありますか?

+0

あなたは 'super 'を呼び出しましたか?あなたのアクティビティでは、onRequestPermissionsResult(...) '? – ridsatrio

+0

@ridsatrioはそれを忘れてしまった。今試してみました:D thanks :) –

答えて

1

Activityのメソッドをオーバーライドするときは、必ずsuper.onRequestPermissionsResult(...)に電話してください。

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 

    final List<Fragment> fragments = getSupportFragmentManager().getFragments(); 
    if (fragments != null) { 
     for (Fragment fragment : fragments) { 
      fragment.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     } 
    } 
} 

は自分のフラグメントがrequestCode場合は適切な処置を行うことで対応している..and:これを解決する一つの他の方法は、手動で、あなたの活動の中に持っているFragment Sに通知することで、言わ

送信されたものです。

関連する問題