原因:java.lang.ArrayIndexOutOfBoundsException: length=0;索引=0

Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0

提问人:M Baig 提问时间:2/25/2021 最后编辑:Rajan KaliM Baig 更新时间:2/25/2021 访问量:851

问:

我正在尝试从android studio中名为“Fragment_One”的片段实现深色主题。 这是来自该片段文件

                              if (!isChecked) {
                                   AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                                   isChecked = true;
                               } else {
                                   AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                                    isChecked = false;
                               }

它在 onRequestPermissionsResult() 方法的以下行中在 MainActivity 中出现错误

    if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

onRequestPermissionsResult() 方法如下:

 public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == REQUEST_CODE_PERMISSION) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "permission granted on request", Toast.LENGTH_SHORT).show();
                files= getAllFiles(this);
                FragmentTransaction f_fragmentTransaction = getSupportFragmentManager().beginTransaction();
                f_fragmentTransaction.replace(R.id.mainFragment, new Fragment_Two()).commit();
            }
            if (grantResults[1] == PackageManager.PERMISSION_GRANTED) {
                Intent intent = new Intent();
                intent.setAction(Settings.ACTION_MANAGE_WRITE_SETTINGS);
                Uri uri = Uri.fromParts("package", getPackageName(), null);
                intent.setData(uri);
                startActivity(intent);
            }
        } else {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]
                    {Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE_PERMISSION);
        }
        if (requestCode == 100) {
            if (grantResults.length > 0
                    && grantResults[0]  + grantResults[1] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(MainActivity.this,"allow settings ",Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(MainActivity.this,"permission denied ",Toast.LENGTH_SHORT).show();
            }
            return;
        }
    }
android android-fragmentActivity 数组索引OutofboundsException

评论

1赞 SergeiTonoian 2/25/2021
数组 grantResults 为空,但您尝试访问它的第一个元素
0赞 M Baig 2/25/2021
在应用主题之前,它工作正常。
0赞 Ashvin solanki 2/25/2021
您在哪里请求权限?
0赞 M Baig 2/25/2021
它位于 MainActivity 中
0赞 Danish 2/25/2021
尝试在片段中添加请求权限。看看它是否有效。

答: 暂无答案