2015-12-30 38 views
0

我想要打開Dialog當我點擊ListView行,並從SQLiteDatabase加載數據爲Spinner當點擊db時打開自定義對話框時填充微調器

填寫Spinner時,應用程序部隊關閉。 崩潰在這一行:

spinner.setAdapter(dataAdapter);

DBAdapter.java

public List<String> getAllLabels() { 
     List<String> labels = new ArrayList<String>(); 

     // Select All Query 
     String selectQuery = "SELECT * FROM " + DATABASE_MAINTABLE; 

     SQLiteDatabase db = DBHelper.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do { 
       labels.add(cursor.getString(1)); 
      } while (cursor.moveToNext()); 
     } 

     // closing connection 
     cursor.close(); 
     db.close(); 

     // returning lables 

     return labels; 
    } 

MSmsActivity.java

public void passengerInformationPopup() { 
     final Dialog dialog = new Dialog(MSmsActivity.this); 

     dialog.setContentView(R.layout.activity_dialog); 
     loadSpinnerData(); //{"Mr.","Mrs.","Ms"}; 
     // String [] tittleSpinner = {"Mr.","Mrs.","Ms"}; 
     // Spinner tittleSpinner = (Spinner) dialog.findViewById(R.id.spinner); 
//  ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
//    android.R.layout.simple_spinner_item, tittleSpinner); 

     // dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item); 
     // tittleSpinner.setAdapter(dataAdapter); 
     dialog.show(); 
    } 

    private void loadSpinnerData() { 
     // DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 
     Spinner spinner = (Spinner) findViewById(R.id.spinner); 
     // Spinner Drop down elements 
     List<String> lables = db.getAllLabels(); 

     // Creating adapter for spinner 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, lables); 

     // Drop down layout style - list view with radio button 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 
     spinner.setAdapter(dataAdapter); 
    } 

錯誤

E/AndroidRuntime: FATAL EXCEPTION: main 
java.lang.NullPointerException 
at www.project_category.ir.project_category.MSmsActivity.loadSpinnerData(MSmsActivity.java:301) 
at www.project_category.ir.project_category.MSmsActivity.passengerInformationPopup(MSmsActivity.java:276) 
at www.project_category.ir.project_category.MSmsActivity$2.onItemClick(MSmsActivity.java:176) 
at android.widget.AdapterView.performItemClick(AdapterView.java:301) 
at android.widget.AbsListView.performItemClick(AbsListView.java:1507) 
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3336) 
at android.os.Handler.handleCallback(Handler.java:730) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:177) 
at android.app.ActivityThread.main(ActivityThread.java:5493) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041) 
at dalvik.system.NativeStart.main(Native Method) 

回答

1

如果你的微調是在對話框內,那麼很可能你的微調ID是空的。 嘗試找到ID這樣和彈出方法

spinner=dialog.findViewById(R.id.spinner); 
0

SpinnerR.layout.activity_dialog,這是你的Dialog的佈局中。

您需要使用

Spinner spinner=dialog.findViewById(R.id.spinner);