2014-04-01 45 views
0

只要在我的活動中按下對話框上的肯定按鈕,就會出現我的錯誤。最初編輯文本應該將信息保存到一個字符串中,然後保存到一個SharedPreferences文件中,但經過很多努力都無濟於事,我重新提供了大部分代碼,並隔離了一條仍然給我一個錯誤的代碼。Android中的Edittext對話框錯誤是不合邏輯的?

spinnerClass.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     public void onItemSelected(AdapterView<?> parent, View view, 
       int pos, long id) { 
      // have each new entry be "insert"ed to arrayadapter so create is at end 
      // the newer, the closer to the top 
      if (id==1) 
       // eventually uses as element value to check array or SharedPrefs if matches 
       // "Create New+" or not < so doesn't prompt for no reason 
      { 
       build = new AlertDialog.Builder(MainActivity.this); 
       LayoutInflater inflater = getLayoutInflater(); 

       // Pass null as the parent view because its going in the dialog layout 
       build.setView(inflater.inflate(R.layout.create_class_dialog, null)) 
         .setTitle("New Class Entry") 
         .setPositiveButton("Create", new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, int id) { 
           String farnsworth = inputClass.getText().toString(); 

要測試這個可能給我一個問題的一行,我硬編碼「Hello world」。執行時沒有錯誤。現在這個簡單的改變正在崩潰我的應用程序!

/*       
           // classesPrefsList = getSharedPreferences(CLASSES_PREFS, 0); 
           //SharedPreferences.Editor editor = classesPrefsList.edit(); 
           //editor.putString("ClassList"+(classesList.size()-1), enteredClass); 
           //editor.commit(); 
           //classesList = getClassesArrayListSharedPreferences(); 
           // classAdapter.notifyDataSetChanged(); 
           * */ 
           dialog.cancel(); 
          } 
         }) 
         .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           dialog.cancel(); 
          } 
         });  
       AlertDialog alert = build.create(); 
       alert.show(); 
      } 
     } 
     public void onNothingSelected(AdapterView<?> parent) { 
     } 
    }); 
+0

你在哪裏初始化'inputClass'的EditText? –

+0

檢查:( 我在我的onCreate之前,我設置任何偵聽器。它與我的其他初始化工作,並且資源ID匹配正確,所以它不是。 – AlleyOOP

+0

如果inputClass'內部對話框然後你會需要對話框視圖來初始化'inputClass' EditText。 –

回答

1

如果inputClass的EditText是內部對話框,然後使用AlertDialog佈局視圖爲初始化:

build = new AlertDialog.Builder(MainActivity.this); 
LayoutInflater inflater = LayoutInflater.from(MainActivity.this); 
View alertview = inflater.inflate(R.layout.create_class_dialog, null); 

/// initialize EditText here.. 
inputClass=(EditText)alertview.findViewById(R.id.edittextid); 
build.setView(alertview) 
.setTitle("New Class Entry") 
....your code here... 
+0

這個工作正常很好!希望所有其他代碼現在可以工作... 介意解釋爲什麼修復工作? – AlleyOOP

+0

ACTUALLY沒有解決我的問題, 輸入「asdfasdf」到edittext,調試器仍然顯示 'ent eredClass \t「」(id = 830025799024)' – AlleyOOP

+0

@AlleyOOP:hmmm'enteredClass「」(id = 830025799024)'與問題無關。我的答案是按照你的問題,因爲你說的應用程序正在崩潰點擊創建按鈕 –