2013-05-18 58 views
1

我有一個保存按鈕,用於加載一個詢問保存名稱的對話界面。當你點擊完成時,它應該創建一個包含一些字符串的共享首選項,但是不幸的是程序已經停止。我怎樣才能解決這個問題?哦,我只是想把它放在那裏,我是新來的機器人。我在製作應用時正在學習所有這些東西。當我按下按鈕時,應用會一直停止

public void save(View view){ 

    LayoutInflater li = LayoutInflater.from(Calculate.this); 
    View pView = li.inflate(R.layout.prompt, null); 

    AlertDialog.Builder adb = new AlertDialog.Builder(Calculate.this); 
    adb.setView(pView); 

    final EditText name = (EditText) findViewById(R.id.etPrompt); 

    adb.setCancelable(false); 
    adb.setPositiveButton("Done", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      n = name.getText().toString(); 
      try { 
       details = getSharedPreferences(n,MODE_PRIVATE); 
       editor = details.edit(); 
       editor.putString("ebp", ebp.getText().toString()); 
       editor.putString("fb", fb.getText().toString()); 
       editor.putString("sv", sv.getText().toString()); 
       editor.putString("pv", pv.getText().toString()); 
       editor.putString("sl", sl.getText().toString()); 
       editor.putString("cl", cl.getText().toString()); 
       editor.commit(); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    }); 

    adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.cancel(); 

     } 
    }); 

    AlertDialog ad = adb.create(); 
    ad.show(); 


} 

logcat的

05-18 20:54:28.300: E/AndroidRuntime(16575): FATAL EXCEPTION: main 

05-18 20:54:28.300: E/AndroidRuntime(16575): java.lang.NullPointerException 

05-18 20:54:28.300: E/AndroidRuntime(16575): at     com.TBJsoft.enclosurecalculator.Calculate$1.onClick(Calculate.java:103) 

05-18 20:54:28.300: E/AndroidRuntime(16575): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166) 

05-18 20:54:28.300: E/AndroidRuntime(16575): at android.os.Handler.dispatchMessage(Handler.java:99) 

05-18 20:54:28.300: E/AndroidRuntime(16575): at android.os.Looper.loop(Looper.java:137) 

05-18 20:54:28.300: E/AndroidRuntime(16575): at android.app.ActivityThread.main(ActivityThread.java:5041) 

05-18 20:54:28.300: E/AndroidRuntime(16575): at java.lang.reflect.Method.invokeNative(Native Method) 

05-18 20:54:28.300: E/AndroidRuntime(16575): at java.lang.reflect.Method.invoke(Method.java:511) 

05-18 20:54:28.300: E/AndroidRuntime(16575): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 

05-18 20:54:28.300: E/AndroidRuntime(16575): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 

05-18 20:54:28.300: E/AndroidRuntime(16575): at dalvik.system.NativeStart.main(Native Method) 

回答

0

您需要使用您的Activities context訪問您的AlertDialogSharedPreferences。所以,你可以初始化它們的AlertDialog之外,或將其更改爲

details = Caluclate.this.getSharedPreferences(n,MODE_PRIVATE); // assuming that Calculate is the name of your `Activity` 

如果這樣沒有幫助,那麼請張貼logcat的,所以我們知道它的崩潰

編輯

變化

final EditText name = (EditText) findViewById(R.id.etPrompt); 

final EditText name = (EditText) pView.findViewById(R.id.etPrompt); 
+0

嘿,我試圖添加Calcualte.this並沒有工作,但我發佈了logcat。我只發佈了那些紅色的。 – ThatBoiJo

+0

什麼是第103行? – codeMagic

+0

這是... n = name.getText()。toString(); – ThatBoiJo

相關問題