用片段类编写的SharedPreferences代码。这是我的代码
SharedPreferences preferences = getActivity().getPreferences(Context.MODE_PRIVATE);
public void saveData(String name){
Log.e("saved",name);
editor = preferences.edit();
editor.putString("Text",name);
editor.commit();
}
public String getData(){
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
String text = preferences.getString("Text", null);
Log.e("save",text);
return text;
}
这就是我从其他活动中调用getData()方法的方法
Stt stt = new Stt();
String name = stt.getData();
我不明白这个问题。为什么我在调用getData()方法时遇到nullpointerexception。我认为我的数据已成功存储。当我使用Log检查时,我在saveData()中获得了正确的字符串。
这是我的日志
FATAL EXCEPTION: main`java.lang.RuntimeException: Unable to start activity `ComponentInfo{com.example.kartikeya_pc.sample/com.example.kartikeya_pc.sample.NaturalLanguage}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2114)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
at android.app.ActivityThread.access$700(ActivityThread.java:143)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4960)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java:371)
at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:366)
at com.example.kartikeya_pc.sample.Stt.getData(Stt.java:404)
at com.example.kartikeya_pc.sample.NaturalLanguage.onCreate(NaturalLanguage.java:28)
at android.app.Activity.performCreate(Activity.java:5203)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
at android.app.ActivityThread.access$700(ActivityThread.java:143)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4960)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
at dalvik.system.NativeStart.main(Native Method) `
`
答案 0 :(得分:0)
在@IBAction func buttonpress(_ sender: UIButton) {
Alamofire.request("https://securelogin.pu.ac.in/cgi-bin/login?cmd=logout").responseString { response in
debugPrint(response)
print(response.request)
print(response.response)
print(response.data)
print(response.result)
if let JSON = response.result.value {
print("JSON \(JSON)")
}
}
}
方法中,为什么不使用:
getData
答案 1 :(得分:0)
问题是您正在写入其他文件并从其他文件中读取数据
从文档:如果你使用getActivity()。getPreferences(Context.MODE_PRIVATE),你会得到一个带有引用活动名称的sharedpref文件。
SharedPreferences getPreferences(int mode)
检索SharedPreferences对象以访问其中的首选项 私人参加此活动。这只是调用底层证券 通过传入此活动的getSharedPreferences(String,int)方法 类名作为首选项名称。
使用PreferenceManager.getDefaultSharedPreferences(getActivity()。getApplicationContext()),您将完全获得由框架管理的不同sharedpref文件。
SharedPreferences getDefaultSharedPreferences(Context context)
获取一个SharedPreferences实例,该实例指向首选框架在给定上下文中使用的默认文件。