我正在尝试使用OuterClass.this
从ResultCallback界面访问顶级活动(MainActivity),但错误显示:
无法解析符号OuterClass
我正在使用Google API for Android的文档中的SettingsApi示例代码。
另外,我得到另一个错误说:
无法解析符号REQUEST_CHECK_SETTINGS
MainActivity.java
public class MainActivity extends AppCompatActivity {
...
...
protected void createLocationRequest() {
...
...
result.setResultCallback(new ResultCallback<LocationSettingsResult>() {
@Override
public void onResult(LocationSettingsResult result) {
final Status status = result.getStatus();
final LocationSettingsStates = result.getLocationSettingsStates();
switch (status.getStatusCode()) {
case LocationSettingsStatusCodes.SUCCESS:
...
break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
try {
status.startResolutionForResult(
OuterClass.this,
REQUEST_CHECK_SETTINGS);
} catch (SendIntentException e) {
...
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
...
break;
}
}
});
}
}
谢谢!
答案 0 :(得分:2)
看起来REQUEST_CHECK_SETTINGS只是值为1的局部整数。
Here's a link到声明以下内容的github示例:
protected static final int REQUEST_CHECK_SETTINGS = 0x1;
然后使用它来调用与您的代码相同的函数:
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
...
status.startResolutionForResult(getActivity(), REQUEST_CHECK_SETTINGS);
此问题先前已在StackOverflow上提出。
我当然可以理解这种困惑。
REQUEST_CHECK_SETTINGS用于Google Android documentation中的示例,但没有解释该值是什么或意味着什么。
即使在documentation specifically about Status.startResolutionForResult中,它也将参数描述为:&#34;传递给onActivityResult的请求代码。&#34;
答案 1 :(得分:0)
我在这里回答,https://stackoverflow.com/a/48428074/9263399
谷歌文档非常令人困惑,因为它使用占位符就像它是预定义的对话框类型代码一样。
答案 2 :(得分:-1)
解决方案:我使用OuterClass.this
而不是使用MainActivity.this
,而且有效!