綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] EditText在AlertDiag裡面取得不到使用者輸入的值?

[複製連結] 查看: 2439|回覆: 2|好評: 0
跳轉到指定樓層
樓主
b770428 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2017-9-1 16:20
10碎鑽
本帖最後由 b770428 於 2017-9-1 16:55 編輯

先講一下我的目的

是想要建立一個可以讓使用者自行輸入資料表 欄位名稱 以及資料內容的app
而底下的程式碼只是一部分目前的一部分
這個部分的目的是要讓使用者點選側邊欄的按鈕之後,出現一個AlertDialog對話視窗
在AlertDialog或對話視窗裡面加入多數個EditText,並在使用者按下對話框的check按鈕之後取得多數個使用者輸入的值
,不過本代碼先以兩個EditText的時候試試看,發現不管使用者輸入什麼值取得的都是""
不知道到底是為什麼??



手機App畫面是這個樣子
上圖兩個EditText輸入值之後用getText()取到的值經過測試以後發現都是"" 取不到使用者實際輸入的值....
  1. package com.example.sca;
  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.app.ProgressDialog;
  5. import android.content.ContentProviderOperation.Builder;
  6. import android.content.ContentValues;
  7. import android.content.Context;
  8. import android.content.DialogInterface;
  9. import android.database.Cursor;
  10. import android.database.sqlite.SQLiteDatabase;
  11. import android.os.Bundle;
  12. import android.view.LayoutInflater;
  13. import android.view.Menu;
  14. import android.view.MenuItem;
  15. import android.view.View;
  16. import android.view.WindowManager;
  17. import android.widget.Adapter;
  18. import android.widget.EditText;
  19. import android.widget.LinearLayout;
  20. import android.widget.ListView;
  21. import android.widget.SimpleCursorAdapter;
  22. import android.widget.TextView;

  23. public class MainActivity extends Activity {
  24. public static int id;
  25. public static ListView lv;
  26. public static SimpleCursorAdapter sca;
  27. public static LinearLayout ll;
  28. public static String test="tes";
  29. public static AlertDialog alertdialog;
  30.         @Override
  31.         protected void onCreate(Bundle savedInstanceState) {
  32.                 super.onCreate(savedInstanceState);
  33.                 setContentView(R.layout.activity_main);
  34.                 this.lv=new ListView(this);
  35.                 this.ll=(LinearLayout)findViewById(R.id.LinearLayout1);
  36.                 SQLiteDatabase MyDB=openOrCreateDatabase("MyDB",Context.MODE_PRIVATE,null);
  37.                 String createTable="CREATE TABLE IF NOT EXISTS list(_id VARCHAR(32),name VARCHAR(64))";
  38.                 MyDB.execSQL(createTable);
  39.                
  40.                 Cursor cs=MyDB.query("list", null, null, null, null, null, null);
  41.                 cs.moveToFirst();
  42.                 if (cs.getCount()==0){
  43.                         id++;
  44.                         ContentValues cv=new ContentValues();
  45.                          cv.put("_id", id);
  46.                          cv.put("name", "Lin");
  47.                          MyDB.insert("list", null, cv);
  48.                          ContentValues cv2=new ContentValues();
  49.                          id++;
  50.                          cv2.put("_id", id);
  51.                          cv2.put("name", "WANG");
  52.                          MyDB.insert("list", null, cv2);
  53.                          cs=MyDB.query("list", null, null, null, null, null, null);
  54.                 }
  55.                 String[] Columns={"name"};
  56.                 int[] View_ids={R.id.TextView1};
  57.                 ListView lv=new ListView(this);
  58.                 lv.setAdapter(sca);
  59.                 this. sca=new SimpleCursorAdapter(this,R.layout.activity_main,cs,Columns,View_ids);
  60.                
  61.         }

  62.         @Override
  63.         public boolean onCreateOptionsMenu(Menu menu) {
  64.                 // Inflate the menu; this adds items to the action bar if it is present.
  65.                 getMenuInflater().inflate(R.menu.main, menu);
  66.                 return true;
  67.         }

  68.         @Override
  69.         public boolean onOptionsItemSelected(MenuItem item) {
  70.                 // Handle action bar item clicks here. The action bar will
  71.                 // automatically handle clicks on the Home/Up button, so long
  72.                 // as you specify a parent activity in AndroidManifest.xml.
  73.                 alertdialog=new AlertDialog.Builder(this)
  74.                                 .setAdapter(sca, null)
  75.                                 .create();
  76.                 alertdialog
  77.                 .setButton("check", new DialogInterface.OnClickListener() {
  78.                  @Override
  79.                       public void onClick(DialogInterface dialog, int which) {
  80.                       // TODO Auto-generated method stub
  81.                                 alertdialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE ,WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
  82.                                 test=((EditText)((LinearLayout)sca.getView(1, ll, lv)).getChildAt(1)).getText().toString();
  83.                                 TextView tv3=new TextView(MainActivity.this);
  84.                                 ll.addView(tv3);
  85.                                 tv3.setText(test);
  86.                         }
  87.                  });
  88.                 alertdialog.show();
  89.                 alertdialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
  90.                 TextView tv2=new TextView(this);
  91.                 ll.addView(tv2);
  92.                 tv2.setText(this.test);
  93.                
  94.                 int id = item.getItemId();
  95.                 if (id == R.id.action_settings) {
  96.                        
  97.                         return true;
  98.                 }
  99.                 return super.onOptionsItemSelected(item);
  100.         }
  101. }
複製代碼

下面是我主頁的XML

複製代碼

「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
 樓主| b770428 | 收聽TA | 只看該作者
發表於 2017-9-1 16:41
圖片上傳好像失敗 沒辦法上傳...

用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

板凳
muska1116 | 收聽TA | 只看該作者
發表於 2017-10-23 23:32
本帖最後由 muska1116 於 2017-10-23 23:39 編輯

因為 ((EditText)((LinearLayout)sca.getView(1, ll, lv)).getChildAt(1)) 抓到的是你主畫面
setContentView(R.layout.activity_main) 裡面的 EditText,而不是 AlertDialog 裡面的...

不過使用了這麼多的 static... 嗯… 蠻特別的...


如果 AlertDialog 比較複雜可以考慮使用官方推薦的 DialogFragment...
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則