2011-03-16 87 views
1

所以,我只是想上的按鈕時,錄音將保存到一個文件,但是,我有一個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):03顯示java.lang.NullPointerException -16 20:52:59.080:ERROR/AndroidRuntime(1019):at android.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java:353)03-16 20:52:59.080:ERROR/AndroidRuntime(1019):at 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:錯誤/ AndroidRuntime(1019):在android.view.View.performClick(View.java:2485)03-16 20:52:59.080:錯誤/ AndroidRuntime(1019):at android.view.View $ PerformClick .run(View.java:9080)03-16 20:52:59.080:ERROR/AndroidRuntime(1019):at a ndroid.os.Handler.handleCallback(Handler.java:587)03-16 20:52:59.080:ERROR/AndroidRuntime(1019):at 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:ERROR/AndroidRuntime(1019):at java.lang.reflect.Method.invokeNative(Native Method)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/.carburan t 03-16 20:52:59.854:WARN/ActivityManager(68):HistoryRecord的活動暫停超時{0128} 謝謝:)。

+0

你又能粘貼logcat的堆棧跟蹤準確判斷錯誤是發生? – 2011-03-16 21:49:32

回答

4

根據您的堆棧跟蹤和額外的信息,錯誤是在該行

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 

我懷疑context參數爲null空指針。 context是您已經聲明並已分配給上下文的變量名稱嗎?

編輯:

您需要爲您的上下文變量分配一個上下文。只要將它聲明爲全局變量而不分配它就可以爲空。

請試試這個:

private Context context = getApplicationContext(); 
0

嗯,我忘了補充一點:

context = getApplicationContext(); 
+0

沒問題! :) – 2011-03-16 22:16:57

+0

我試圖投票,但我必須達到15聲望:\!無論如何,謝謝:);) – androniennn 2011-03-16 22:19:04

+0

@Hakan:我有一個問題,如果你允許:有什麼區別使私人Context Context = getApplicationContext();和上下文context = activity.this;我注意到,當創建一個菜單(包括alertdialog)與上下文context = getApplicationContext();它只會在FC上結束:\ – androniennn 2011-03-16 22:30:36