按钮上的奇怪异常

时间:2011-03-16 21:47:23

标签: android button

所以,我只想在点击按钮时保存到文件中,但是,我有一个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}

请帮忙吗? 谢谢:)。

2 个答案:

答案 0 :(得分:4)

根据您的堆栈跟踪和额外信息,错误是行

处的空指针
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 

我怀疑context参数为null。 context是您已声明并已分配给上下文的变量名吗?

编辑:

您需要为上下文变量分配一个Context。只需将其声明为全局变量而不分配它就会使其为空。

请试试这个:

private Context context = getApplicationContext();

答案 1 :(得分:0)

好吧,我忘了加上这个:

context = getApplicationContext();