Android super 的 onRequestPermissionsResult 实用程序
Android onRequestPermissionsResult utility of super
当我使用 onRequestPermissionsResulti 时,保留 super 有用吗?
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
如果我们看super方法
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
mFragments.noteStateNotSaved();
int index = (requestCode >> 16) & 0xffff;
if (index != 0) {
index--;
String who = mPendingFragmentActivityResults.get(index);
mPendingFragmentActivityResults.remove(index);
if (who == null) {
Log.w(TAG, "Activity result delivered for unknown Fragment.");
return;
}
Fragment frag = mFragments.findFragmentByWho(who);
if (frag == null) {
Log.w(TAG, "Activity result no fragment exists for who: " + who);
} else {
frag.onRequestPermissionsResult(requestCode & 0xffff, permissions, grantResults);
}
}
}
我不太明白超级的目标,也许只是为了日志?
我可以安全地删除所有地方的 super 方法吗?
当您处理 super
方法时,请通过查看其源代码来检查它在做什么。 (Ctrl + 单击)。
在您的情况下,class FragmentActivity
(AppCompatActivity
的父 class)的方法 onRequestPermissionsResult
具有将结果转发到的代码它的碎片。所以如果你需要片段中的结果,这是必要的,否则你可以去掉 super 调用。此外,如果您直接使用 Activity
class 作为 activity,您可以将其删除。
在 Fragment
的情况下,方法 onRequestPermissionsResult
没有主体。所以你可以删除 super 调用。
不调用 .super()
不再是一种选择。不知道这更改了什么版本,但 Android Studio 现在坚持为 AppCompatActivity 的任何子类调用 .super()
。
奇怪的是,即使有这个错误,代码仍然可以编译和运行!我猜这是为了避免破坏旧代码。在不久的将来查找编译器错误。
课:调用.super()
。看起来 google 真的 想要你。
当我使用 onRequestPermissionsResulti 时,保留 super 有用吗?
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
如果我们看super方法
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
mFragments.noteStateNotSaved();
int index = (requestCode >> 16) & 0xffff;
if (index != 0) {
index--;
String who = mPendingFragmentActivityResults.get(index);
mPendingFragmentActivityResults.remove(index);
if (who == null) {
Log.w(TAG, "Activity result delivered for unknown Fragment.");
return;
}
Fragment frag = mFragments.findFragmentByWho(who);
if (frag == null) {
Log.w(TAG, "Activity result no fragment exists for who: " + who);
} else {
frag.onRequestPermissionsResult(requestCode & 0xffff, permissions, grantResults);
}
}
}
我不太明白超级的目标,也许只是为了日志?
我可以安全地删除所有地方的 super 方法吗?
当您处理 super
方法时,请通过查看其源代码来检查它在做什么。 (Ctrl + 单击)。
在您的情况下,class FragmentActivity
(AppCompatActivity
的父 class)的方法 onRequestPermissionsResult
具有将结果转发到的代码它的碎片。所以如果你需要片段中的结果,这是必要的,否则你可以去掉 super 调用。此外,如果您直接使用 Activity
class 作为 activity,您可以将其删除。
在 Fragment
的情况下,方法 onRequestPermissionsResult
没有主体。所以你可以删除 super 调用。
不调用 .super()
不再是一种选择。不知道这更改了什么版本,但 Android Studio 现在坚持为 AppCompatActivity 的任何子类调用 .super()
。
奇怪的是,即使有这个错误,代码仍然可以编译和运行!我猜这是为了避免破坏旧代码。在不久的将来查找编译器错误。
课:调用.super()
。看起来 google 真的 想要你。