Android对话框和edittext值?

时间:2011-08-22 12:27:47

标签: java android dialog android-edittext

我无法保存位于edittext内的字符串值。

会发生什么,dialog显示edittext,确认和取消按钮。

当推送确定button时,我希望发生的是bar - 变量从string-value获取edittext

public void dialog(){

    final Dialog dialog = new Dialog(myClass.this);
    dialog.setContentView(R.layout.mydialog);
    dialog.setTitle("I'm soo smart. S-M-R-T. Smart.");
    dialog.setCancelable(true);
    dialog.show();
    Button okButton = (Button) dialog.findViewById(R.id.dialog_OK_BUTTON);
    okButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            try{

                LayoutInflater factory = LayoutInflater.from(Inloggning.this);
                final View textEntryView = factory.inflate(R.layout.myDialog, null);
                final EditText barText= (EditText) textEntryView.findViewById(R.id.dialog_FOO);


                // this gets returned empty.
                bar= barText.getText().toString();


                System.out.println("foo: "+bar);


                //call();
                dialog.hide();

            }
            catch(Exception e){

                // do whatever nessesary.
            }

        } 
    });

    Button cancelButton = (Button) dialog.findViewById(R.id.dialogbtn_cancel);
    cancelButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            dialog.dismiss();
        }
    });



}

有人可以对此有所了解吗?

编辑:这是示例代码。实际代码在变量上没有重复名称。

2ND编辑:删除重复项..

4 个答案:

答案 0 :(得分:3)

检查barText是否为空。

如果你从onClick听众声明它会发生什么?

也许改变:

final EditText barText= (EditText) textEntryView.findViewById(R.id.dialog_FOO);

为:

final EditText barText= (EditText) dialog.findViewById(R.id.dialog_FOO);

答案 1 :(得分:0)

首先,两个不同的edittext框必须具有不同的id。 其次会有两个字符串变量来存储它们。

final EditText barFirstText =(EditText)textEntryView.findViewById(R.id.dialog1_FOO); final EditText barSecondText =(EditText)textEntryView.findViewById(R.id.dialog2_FOO);

            // these gets returned empty.
            barFirst= barText.getText().toString();
            barSecond= barText.getText().toString();

            System.out.println("foo: "+barFirst);
            System.out.println("foo: "+barSecond);

答案 2 :(得分:0)

我有类似的问题。我做了子类。

   public class InputDialog extends Dialog{

  private String result = null;

  private Context context = null;

  private EditText keyEdit = null;

  public InputDialog(Context _context, String _title, String _message) {
    super(_context);
    context = _context;

    setContentView(R.layout.input_dialog);
    setTitle(_title);

    keyEdit = ((EditText) findViewById(R.id.inputEditText));





  }

  public void onBackPressed() {
    cancel();
  }


  public InputDialog setOkListener(View.OnClickListener _onOk) {
    findViewById(R.id.okButton).setOnClickListener(_onOk);
    return this;
  }

  public InputDialog setCancelListener(View.OnClickListener _onCancel) {
    findViewById(R.id.cancelButton).setOnClickListener(_onCancel);
    return this;
  }

  public String getResult() {    
    return keyEdit.getText().toString();
  }

  public EditText getKeyEdit() {
    return keyEdit;
  }


}

使用

inputDialog = new InputDialog(context, getString(R.string.encription_dialog_title), getString(R.string.encription_dialog_message));
inputDialog.setOkListener(new OnClickListener(){
  public void onClick(View v) {        
    model.setEncriptionKey(inputDialog.getResult());
    listRefresh();
    if (inputDialog.getResult() == null || inputDialog.getResult().equals("")) {
      AppHelper.showMessage(FileManagerActivity.this, getString(R.string.encription_dialog_message));
    } else {
      inputDialog.dismiss();
      inputDialog.getKeyEdit().setText("");
    }

  }
});
inputDialog.setCancelListener(new OnClickListener(){
  public void onClick(View v) {      
    inputDialog.dismiss();
    inputDialog.getKeyEdit().setText("");
    onBackPressed();
  }
});
inputDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){

  public void onCancel(DialogInterface dialog) {
     inputDialog.dismiss();
     inputDialog.getKeyEdit().setText("");
     onBackPressed();

  }
});

EditText keyEdit = inputDialog.getKeyEdit();



});

答案 3 :(得分:-2)

我假设这个栏是一个String类型的变量,这里的问题似乎是你用相同的名称声明两个edittexts,而且同名的字符串变量也是如此,我建议你改变名字然后再试一次。

 final EditText barText=(EditText) textEntryView.findViewById(R.id.dialog_FOO);
 final EditText barText1=(EditText) textEntryView.findViewById(R.id.dialog_FOO1);

 // these gets returned empty.
 bar= barText.getText().toString();
 bar1= barText.getText().toString();

 System.out.println("foo: "+bar);
 System.out.println("foo: "+bar1);