Странное исключение на кнопке - PullRequest
1 голос
/ 17 марта 2011

Итак, я просто хочу сохранить файл при нажатии на кнопку, однако у меня есть ФК, вот код:

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: ОШИБКА / AndroidRuntime (1019): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: главная 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): java.lang.NullPointerException 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): в android.preference.PreferenceManager.getDefaultSharedPreferencesName (PreferenceManager.java:353) 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): в android.preference.PreferenceManager.getPreference. Preference.java: 348) 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): на carburant.android.com.carburant $ 1.onClick (carburant.java:118) 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime(1019): на android.view.View.performClick (View.java:2485) 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): на android.view.View $ PerformClick.run (View.java:9080) 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): на android.os.Handler.handleCallback (Handler.java:587) 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): в android.os.Handler.dispatchMessage (Handler.java:92) 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): вandroid.os.Looper.loop (Looper.java:123) 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): в android.app.ActivityThread.main (ActivityThread.java:3683) 03-16 20:52: 59.080: ОШИБКА / AndroidRuntime (1019): в java.lang.reflect.Method.invokeNative (собственный метод) 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): в java.lang.reflect.Method.invoke (Method.java:507) 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:839) 03-16 20:52: 59.080: ОШИБКА / AndroidRuntime (1019): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 03-16 20: 52: 59.080: ОШИБКА / AndroidRuntime (1019): на dalvik.system.NativeStart.main (собственный метод) 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 ]

4 голосов
/ 17 марта 2011

Согласно вашей трассировке стека и дополнительной информации, ошибка представляет собой нулевой указатель на строку

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 

Я подозреваю, что параметр context равен нулю. context - это имя переменной, которую вы объявили и уже присвоили контексту?

EDIT:

вам нужно назначить Context для вашей переменной context. Просто объявив его как глобальную переменную без присваивания, он становится нулевым.

Пожалуйста, попробуйте это:

private Context context = getApplicationContext();
0 голосов
/ 17 марта 2011

Ну, я забыл добавить это:

context = getApplicationContext();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...