我把头发拉过这个。
我有一个应用程序,当您按下菜单项时,我希望它显示输入警告对话框。当用户点击“确定”时,他们输入到对话框中的EditText的文本想要返回以便稍后在活动中使用。
所以我想:
name = input.getText().toString(); //input is an EditView which is the setView() of the dialog
在“确定”按钮的onClick内部可以工作,但事实并非如此。 Eclipse告诉我,我无法在onClick中设置名称,因为它不是最终的,但如果我将名称的定义更改为final,则无法明显更改,因此无法在onClick()中设置。
以下是此位的完整代码:
String routeName = "";
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Title");
alert.setMessage("Message");
// Set an EditText view to get user input
final EditText inputName = new EditText(this);
alert.setView(inputName);
alert.setPositiveButton("Set Route Name", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
routeName = inputName.getText().toString();
}
});
alert.show();
我必须在这里做一些非常愚蠢的事情,因为我已经搜索了很长时间并且发现没有其他人遇到同样的问题。
任何人都可以开导我吗?
感谢您的时间,
InfinitiFizz
答案 0 :(得分:3)
实际上,你无法了解onClick
内的任何内容,这是我认为的匿名方法。你可以做的是获取上下文并从那里找到你的观点。它看起来像这样:
yourButton.setOnClickListener(new View.OnClickListener() {
public boolean onClick(View v) {
name = findViewById(R.id.yourInputId)).getText().toString();
return true;
}
);
你也可以使用v
参数,例如在你的监听器中调用v.getContext()
。
答案 1 :(得分:2)
您可以将routerName
设为成员变量。