所以,我只想在点击按钮时保存到文件中,但是,我有一个FC,这里是代码:
final Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String value1 = vol.getText().toString();
String value2 = kil.getText().toString();
if (value1 != null && value1.trim().length() > 0 && value2 != null && value2.trim().length() > 0)
{
float q1=Float.parseFloat(vol.getText().toString());
float q2=Float.parseFloat(kil.getText().toString());
float x=((q1 / q2)* 100);
String y= Float.toString(x);
cons.setText(y);
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
data = format.format(new Date());
data = data + " : " + y + " L/100km\n" + value1 + " litres "+ value2 + " km\n";
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
if (data != "" ) {
String fileName = getResources().getString(R.string.fileName);
String fileDir = ""+ preferences.getString("login", "") + "."+ preferences.getString("marque", "") + ".";
myIO.WriteSettings(context, fileDir + fileName, data);
data = "";
}
}
else
{
Toast.makeText(carburant.this, "Veuillez vérifier les deux champs", Toast.LENGTH_LONG).show();
}
}
});
logcat的: 03-16 20:52:59.080:ERROR / AndroidRuntime(1019):致命异常:主要 03-16 20:52:59.080:ERROR / AndroidRuntime(1019):java.lang.NullPointerException 03-16 20:52:59.080:ERROR / AndroidRuntime(1019):在android.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java: 353)03-16 20:52:59.080:ERROR / AndroidRuntime(1019):在android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:348)03-16 20:52:59.080:ERROR / AndroidRuntime(1019):at carburant.android.com.carburant $ 1.onClick(carburant.java:118)03-16 20:52:59.080:ERROR / AndroidRuntime(1019):at android.view.View.performClick(View.java:2485)03- 16 20:52:59.080:ERROR / AndroidRuntime(1019):在android.view.View $ PerformClick.run(View.java:9080)03-16 20:52:59.080:ERROR / AndroidRuntime(1019):在android。 os.Handler.handleCallback(Handler.java:587)03-16 20:52:59.080:ERROR / AndroidRuntime(1019):在android.os.Handler.dispatchMessage(Handler.java:92)03-16 20:52: 59.080:ERROR / AndroidRuntime(1019):在android.os.Looper.loop(Looper.java:123)03-16 20:52:59.080: ERROR / AndroidRuntime(1019):在android.app.ActivityThread.main(ActivityThread.java:3683)03-16 20:52:59.080:ERROR / AndroidRuntime(1019):at java.lang.reflect.Method.invokeNative(Native方法)03-16 20:52:59.080:ERROR / AndroidRuntime(1019):at java.lang.reflect.Method.invoke(Method.java:507)03-16 20:52:59.080:ERROR / AndroidRuntime(1019) :at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)03-16 20:52:59.080:ERROR / AndroidRuntime(1019):at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597)03-16 20:52:59.080:ERROR / AndroidRuntime(1019):at dalvik.system.NativeStart.main(Native Method)03-16 20:52:59.080:WARN / ActivityManager(68) :强制完成活动carburant.android.com/.carburant 03-16 20:52:59.854:WARN / ActivityManager(68):HistoryRecord的活动暂停超时{406e89b8 carburant.android.com/.carburant}
请帮忙吗? 谢谢:)。
答案 0 :(得分:4)
根据您的堆栈跟踪和额外信息,错误是行
处的空指针SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
我怀疑context
参数为null。 context
是您已声明并已分配给上下文的变量名吗?
编辑:
您需要为上下文变量分配一个Context。只需将其声明为全局变量而不分配它就会使其为空。
请试试这个:
private Context context = getApplicationContext();
答案 1 :(得分:0)
好吧,我忘了加上这个:
context = getApplicationContext();