我无法保存位于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编辑:删除重复项..
答案 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);