2016-02-12 73 views
-1

我有一個SQLite數據庫,我需要存儲一些值,我把它放到一個AlertDialog。需要從alertDialog檢索值

這是我的代碼:

boton1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

       final TextView asd = (TextView)findViewById(R.id.textView1); 

       // get prompts.xml view 
       LayoutInflater li = LayoutInflater.from(context); 
       View promptsView = li.inflate(R.layout.dialog, null); 

       AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
         context); 

       // set prompts.xml to alertdialog builder 
       alertDialogBuilder.setView(promptsView); 

       final EditText userInput = (EditText) promptsView 
         .findViewById(R.id.editTextDialogUserInput1); 
       final String uI1 = userInput.getText().toString().trim(); 

       final EditText userInput1 = (EditText) promptsView 
         .findViewById(R.id.editTextDialogUserInput2); 
       final String uI2 = userInput1.getText().toString().trim(); 

       final EditText userInput2 = (EditText) promptsView 
         .findViewById(R.id.editTextDialogUserInput3); 
       final String uI3 = userInput2.getText().toString().trim(); 

       // set dialog message 
       alertDialogBuilder 
         .setCancelable(false) 
         .setPositiveButton("Aceptar", 
           new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog,int id) { 
             asd.setText(uI1); 
             if(db != null){ 
              db.execSQL("INSERT INTO Usuarios (nombre, apellidos, localidad) " + 
                "VALUES ('" + uI1 + "', '" + uI2 + "', '" + uI3 + "')"); 



             } 
            } 
           }) 
         .setNegativeButton("Cancelar", 
           new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 
             dialog.cancel(); 
            } 
           }); 

TextView的是檢查是否即時得到的值是錯誤的,但即時得到在兩側,TextView的和數據庫中的值,我失去了什麼一個空字符串?對dialog.xml的引用很好,我有3個名爲editTextDialogUserInput1,2和3的EditTexts。

回答

0

你必須得到onclick方法中的值。 把這些樣線內onclick()

final String uI1 = userInput.getText().toString().trim(); 
0

亞歷克斯,谷歌建議使用DialogFragment代替這些方案,這將使得代碼更容易一些,我opininon閱讀。 但假設你堅持這種方法,你需要把 final String uI1 = userInput.getText()。toString()。trim();

  final String uI1 = userInput.getText().toString().trim(); 
      final String uI2 = userInput1.getText().toString().trim(); 
      final String uI3 = userInput2.getText().toString().trim(); 

的點擊數方法

public void onClick(DialogInterface dialog,int id) { 
       final String uI1 = userInput.getText().toString().trim(); 
       final String uI2 = userInput1.getText().toString().trim(); 
       final String uI3 = userInput2.getText().toString().trim(); 
    ... 
    } 

主要的原因裏面是你需要評估的是在文本編輯用戶點擊「Acceptar」後只。您擁有它的方式,一旦加載OnCreate,存在於TextEdit中的「」的值將保存在最終字符串中。所有你輸入的內容都是不相關的,因爲「」的值已經被創建並且一直被保存。

我還沒有測試過它,但我不認爲你可以在TextEdit上使用Final或者至少不應該使用Final,因爲它需要是可變的。我可能在這裏錯了,但我從來沒有用過最終的TextEdit。

+0

亞歷克斯,使用調試器,使它成爲你最好的朋友。如果您將斷點放在您認爲發生問題的地方並在調試中運行,則可以在此處看到變量的值。如果您發現這些值不對齊,則可以在該行之前放置斷點,並跟蹤出現錯誤的位置。如果這些值確實一致,則稍後再添加更多斷點以查看它與預期的偏差。這對我有很大的幫助,特別是在編碼的第6和第7個小時。祝你好運。 – Khanal

+0

非常感謝您的提示,我將開始使用它。 – Aleeeeeeeeeeeeex