我有一个SQLite数据库,我需要存储一些我放入AlertDialog的值。
这是我的代码:
boton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
final TextView asd = (TextView)findViewById(R.id.textView1);
// get prompts.xml view
LayoutInflater li = LayoutInflater.from(context);
View promptsView = li.inflate(R.layout.dialog, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);
// set prompts.xml to alertdialog builder
alertDialogBuilder.setView(promptsView);
final EditText userInput = (EditText) promptsView
.findViewById(R.id.editTextDialogUserInput1);
final String uI1 = userInput.getText().toString().trim();
final EditText userInput1 = (EditText) promptsView
.findViewById(R.id.editTextDialogUserInput2);
final String uI2 = userInput1.getText().toString().trim();
final EditText userInput2 = (EditText) promptsView
.findViewById(R.id.editTextDialogUserInput3);
final String uI3 = userInput2.getText().toString().trim();
// set dialog message
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("Aceptar",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
asd.setText(uI1);
if(db != null){
db.execSQL("INSERT INTO Usuarios (nombre, apellidos, localidad) " +
"VALUES ('" + uI1 + "', '" + uI2 + "', '" + uI3 + "')");
}
}
})
.setNegativeButton("Cancelar",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
TextView是检查Im得到的值是否错误但我在两侧得到一个空字符串,TextView和数据库值,我缺少什么?对dialog.xml的引用很好,我有3个EditTexts,名为editTextDialogUserInput1,2和3
答案 0 :(得分:0)
你必须在onclick方法中获取值。
将这些行放在onclick()
final String uI1 = userInput.getText().toString().trim();
答案 1 :(得分:0)
亚历克斯,谷歌建议使用DialogFragment代替这些场景,这将使我的意见中的代码更容易阅读。 但假设你坚持这种方法,你需要把 final String uI1 = userInput.getText()。toString()。trim();
final String uI1 = userInput.getText().toString().trim();
final String uI2 = userInput1.getText().toString().trim();
final String uI3 = userInput2.getText().toString().trim();
在onlick方法中
public void onClick(DialogInterface dialog,int id) {
final String uI1 = userInput.getText().toString().trim();
final String uI2 = userInput1.getText().toString().trim();
final String uI3 = userInput2.getText().toString().trim();
...
}
这样做的主要原因是您需要在用户单击“Acceptar”后评估TextEdit中的内容。你拥有它的方式,加载OnCreate后,TextEdit中存在的“”值保存在Final String中。之后输入的所有内容都无关紧要,因为创建视图后,“”的值已经并且将始终保存。
我还没有测试过,但我认为你不能在TextEdit上使用Final,或者至少不应该使用Final,因为它需要是可变的。我可能在这里错了,但我从未使用过带有TextEdit的final。