开发者

Access controls within custom alert dialog in android

开发者 https://www.devze.com 2023-01-02 19:48 出处:网络
When displaying custom dialog box which is showing textView and EditView. How can i access these elements within dialog. Below is the code which is giving error.

When displaying custom dialog box which is showing textView and EditView. How can i access these elements within dialog. Below is the code which is giving error.

LayoutInflater factory = LayoutInflater.from(this);
            final View textEntryView = factory.inflate(R.layout.alert_dialog_text_entry, null);
            return new AlertDialog.Builder(AlertDialogSamples.this)
                .setIcon(R.drawable.alert_dialog_icon)
                .setTitle(R.string.alert_dialog_text_entry)
                .setView(textEntryView)
                .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                     string = uetd.getText().toString() + ":" + petd.getText().toString(); /////producing error
                    }
                })
                .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        /* User clicked cancel so do some stuff */
                    }
                })
                .create();

public class listdemo extends ListActivity {
    /** Called when the activity is first created. */
    private static fin开发者_运维问答al int DIALOG_TEXT_ENTRY = 7;
    EditText uetd;
    EditText petd;
    SharedPreferences.Editor editor;
    String string;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES));

        ListView lv = getListView();
        lv.setTextFilterEnabled(true);
     uetd=(EditText)findViewById(R.id.username_edit);
      petd=(EditText)findViewById(R.id.password_edit);
lv.setOnItemClickListener(new OnItemClickListener() {


        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {

    showDialog(DIALOG_TEXT_ENTRY);
}
        });
}
}


Instead of returning the dialog immedately with return new AlertDialog.builder....and so on....you should save an instance of the dialog by creating a class variable just like this

AlertDialog dialog;

Then you can easily access the views of the dialog within the callback of the dialog:

dialog.findViewById(R.id.username_edit);

You have to do this because when creating the callback it is in a way constructing a new class in memory so when you call findViewById() directly it can't find the activity


try this code

 uetd=(EditText) textEntryView.findViewById(R.id.username_edit);

after following line in your code

final View textEntryView = factory.inflate(R.layout.alert_dialog_text_entry, null);
0

精彩评论

暂无评论...
验证码 换一张
取 消