我正在使用一个AppCompactActivity创建一个应用程序,所有其他视图都使用Fragment.所以我想使用PreferenceFragmentCompat.但是当我创建它时,我收到以下错误.
02-29 10:50:01.080 9812-9812/com.example.main E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.main, PID: 9812
android.view.InflateException: Binary XML file line #12: Error inflating class (not found)RingtonePreference
at android.support.v7.preference.PreferenceInflater.createItemFromTag(PreferenceInflater.java:300)
at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:358)
at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:360)
at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:167)
at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:117)
at android.support.v7.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:115)
at android.support.v7.preference.PreferenceFragmentCompat.addPreferencesFromResource(PreferenceFragmentCompat.java:366)
at com.example.main.PreferenceFragmentSettings.onCreate(PreferenceFragmentSettings.java:18)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1939)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1029)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.preference.RingtonePreference" on path: DexPathList[[zip file "/data/app/com.example.main-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, …Run Code Online (Sandbox Code Playgroud) 我在排球上使用以下代码进行字符串请求
pDialog = new ProgressDialog(context);
pDialog.setMessage("Loading...");
pDialog.setCancelable(false);
pDialog.show();
StringRequest strReq = new StringRequest(Method.POST,
url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
pDialog.dismiss();
Log.e(tag, response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pDialog.dismiss();
}
}) {
protected Map<String, String> getParams(){
Map<String, String> params = new HashMap<String, String>();
params.put("tag", "SHOW_FILE");
params.put("filename",filename);
return params;
};
};
// Adding request to request queue
Application.getInstance().addToRequestQueue(strReq, "get_file");
Run Code Online (Sandbox Code Playgroud)
如果变量filename = null,我收到以下错误:
08-02 10:28:06.192: E/Volley(2935): [2128] NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException
08-02 10:28:06.192: …Run Code Online (Sandbox Code Playgroud) 我想请求权限android.permission.ACCESS_COARSE_LOCATION获取塔位置.
但在请求该权限之前,我想知道用户是否通过选中"永不再询问"复选框来阻止它.
是否有正确的方法来了解"永不再问"权限?
=======================要求==========================
我想阻止用户在不授予位置访问权限的情况下进入屏幕.
所以我使用权限请求作为名为requestLocation()的函数,该函数在onResume()中调用.
里面的requestLocation()
- >检查是否允许
- >如果:已授予权限,则注册更新位置.
- > ELSE:未授权,用两个按钮显示授权许可对话
- >一个按钮执行代码"ActivityCompat.requestPermissions(..........);" 并显示内置弹出窗口以获得许可.
- >另一个按钮有助于退出应用程序.
当在onRequestPermissionsResult()中标记deny或grant时,将再次执行requestLocation().
但是,如果选中"Never again again"并单击deny,则无限循环将继续如下所示
onRequestPermissionsResult()=>
PERMISSION_DENIED =>
requestLocation()=>
权限未授予=>
ActivityCompat.requestPermissions(..........); =>
onRequestPermissionsResult()=> PERMISSION_DENIED => requestLocation()=>
权限未授予=>
ActivityCompat.requestPermissions(..........);
=> ...............
因此,如果我能够理解是否单击"再次显示",我可以通过在requestLocation()中检查它来退出循环.