[英]EditText.getText() is not working properly in Android
我有下面的代码,但我不能够检索在编辑文本框(输入的值userInput_lat
和userInput_lon
)的字符串latitude
和longitude
使用这样的:
latitude = userInput_lat.getText().toString();
longitude = userInput_lon.getText().toString();
result.setText(latitude);
它什么也不打印。 您能建议一种补救方法吗?
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class Prompt extends Activity {
final Context context = this;
private Button button, button2;
private EditText result, result2, userInput_lat, userInput_lon;
String latitude, longitude, phone;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prompt);
// components from main.xml
button = (Button) findViewById(R.id.loc);
result = (EditText) findViewById(R.id.editTextResult);
result2 = result;
// add button listener
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// get prompts.xml view
LayoutInflater li = LayoutInflater.from(context);
View promptsView = li.inflate(R.layout.prompts, null);
AlertDialog.Builder alertDialogBuilder_l = new AlertDialog.Builder(context);
// set prompts.xml to alertdialog builder
alertDialogBuilder_l.setView(promptsView);
// final EditText userInput_lat = (EditText)
// promptsView.findViewById(R.id.latInput);
// final EditText userInput_lon = (EditText)
// promptsView.findViewById(R.id.lonInput);
userInput_lat = (EditText) promptsView.findViewById(R.id.latInput);
userInput_lon = (EditText) promptsView.findViewById(R.id.lonInput);
/**
*
* code to get input to a string
*/
latitude = userInput_lat.getText().toString();
longitude = userInput_lon.getText().toString();
// set dialog message
alertDialogBuilder_l.setCancelable(false)
.setPositiveButton("SET", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// get user input and set it to result edit text
result.setText(latitude);
}
}).setNegativeButton("BACK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder_l.create();
// show it
alertDialog.show();
}
});
// ////////To set phone nymber,actions to be performed while clicking
// 3rd button////
button2 = (Button) findViewById(R.id.ph);
result2 = (EditText) findViewById(R.id.editTextResult);
// add button listener
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// get prompts.xml view
LayoutInflater li2 = LayoutInflater.from(context);
View prompts_phView = li2.inflate(R.layout.prompts_ph, null);
AlertDialog.Builder alertDialogBuilder_p = new AlertDialog.Builder(context);
alertDialogBuilder_p.setView(prompts_phView);
final EditText userInput_ph = (EditText) prompts_phView.findViewById(R.id.phInput);
// code to get input to a string
// Log.v("EditText", userInput_ph.getText().toString());
phone = userInput_ph.getText().toString();
// set dialog message
alertDialogBuilder_p.setCancelable(false)
.setPositiveButton("SET", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// get user input and set it to result
// edit text
result2.setText(userInput_ph.getText());
}
}).setNegativeButton("BACK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog_p = alertDialogBuilder_p.create();
// show it
alertDialog_p.show();
}
});
}
}
之所以发生这种情况,是因为在创建这些字段时会调用读取EditText值的代码,而不是在用户单击弹出窗口中的接受按钮时调用。
从逻辑上讲,当前的流程是:
问题是#3发生在#5之前。 将该代码移到您调用result.setText(latitude)
,就可以了。 像这样:
.setPositiveButton("SET", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// get user input and set it to result edit text
latitude = userInput_lat.getText().toString();
result.setText(latitude);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.