2013-12-07 2 views
0

Я хочу поставить строку в EditText в AlertDialog, который находится в onItemClick слушателю ListVIew.Here является частью кодаПочему setText() EditText не работает?

dialogbuilder= new AlertDialog.Builder(this) 

      .setTitle(R.string.title_connect_dialog) 

      .setView(getLayoutInflater().inflate(R.layout.dialog_connect,null)) 

      .setPositiveButton("Connect", new DialogInterface.OnClickListener() { 

       @Override 

       public void onClick(DialogInterface dialog, int which) { 
       } 

      }) 

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

       @Override 

       public void onClick(DialogInterface dialog, int which) { 
       } 

      }) 

      .create(); 



    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    final View view = inflater.inflate(R.layout.dialog_connect, null); 

edit1 = (EditText)view.findViewById(R.id.devicename); 

    edit2 = (EditText)view.findViewById(R.id.deviceadd); 



private AdapterView.OnItemClickListener mDeviceClickListener = new AdapterView.OnItemClickListener() { 



    public void onItemClick(AdapterView<?> adapterView, View v, int arg2, long arg3) { 

     String info = ((TextView) v).getText().toString(); 

     name = info.substring(0,info.length() - 18); 

     address = info.substring(info.length() - 17); 

     dialogbuilder.show(); 

      edit1.setText(name); 

      edit2.setText(address); 

     } 

}; 

При запуске проекта, нет ничего в EditText Это не работает! Но нет никаких исключений или ошибок. Я попытался установить только текст в файле XML. Я заменил EditText на TextView, но не работает. Что-то не так в логике? Спасибо за чтение.

+0

Где '' name' и address' даже определены? –

+0

remove dialogbuilder.show(); сверху eddit1.setText (имя) и поместить его после eddit2.setText (адрес) –

+0

В onItemClickListner. – lzy0505

ответ

1

Использования в качестве экземпляра вида для доступа отображения формы Dialog макета, который вы передаете в setView методы из AlertDialog.Builder изменений:

.setView(getLayoutInflater().inflate(R.layout.dialog_connect,null)) 

к

.setView(view) 

EDIT:

или вместо раздувания раздувания снова, чтобы получить доступ к представлениям, вы должны использовать экземпляр dialogbuilder itialize EditText как:

edit1 = (EditText)dialogbuilder.findViewById(R.id.devicename); 
edit2 = (EditText)dialogbuilder.findViewById(R.id.deviceadd); 
+0

Спасибо! Это работает! – lzy0505

1

Вы показываете Dialog перед установкой текста

dialogbuilder.show(); 

edit1.setText(name); 
edit2.setText(address); 

Попробуйте изменить что вокруг

edit1.setText(name); 
edit2.setText(address); 
dialogbuilder.show(); 
+0

Я пробовал, но не работал – lzy0505

Смежные вопросы