我正在尝试在Android Studio上创建一个带有编辑文本字段的弹出框,并希望将用户输入的数据存储在该类中使用的变量中。 像这样:
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("New player")
.setMessage("Input new player's name")
.setView(input)
.setPositiveButton("Register", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
name = input.getText().toString(); //<---HERE !want to use this variable
}
})
.setNegativeButton("Cancel", null)
.show();
这不起作用,那么如何从弹出窗口中提取name
的值以在主代码中使用它?
答案 0 :(得分:0)
这样做:
datanucleus.Mapping
使用final String[] name = new String[1];
final EditText input = new EditText(this);
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("New player")
.setMessage("Input new player's name")
.setView(input)
.setPositiveButton("Register", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
name[0] = input.getText().toString(); <---HERE! want to use this variable
}
})
.setNegativeButton("Cancel", null)
.show();
在下面的评论中澄清了Jox的后续问题:要访问name[0]
中的变量,它必须是onClick
。但是,您无法为简单的最终变量赋值。但是,您可以为Array成员分配值。因此,数组而不是字符串变量。顺便说一下, Andriod Studio会以这种方式为您自己做,只需按照错误输出代码的建议修复。
答案 1 :(得分:0)
您应该在Activity内部声明DialogInterface.OnCLickListener。通过创建一个监听器并对其进行分配或让您的活动实现该接口。然后你不需要宣布名字为final。
你必须将name声明为final的原因是因为你无意中创建了一个对象来监听click,这需要将这个匿名类使用的任何外部函数的合约声明为final。
我建议在Activity中创建一个监听器,然后将其分配给setOnClickListener(x)
答案 2 :(得分:0)
试试这个,它对我有用:
public class Activity extends AppCompatActivity implements DialogInterface.OnClickListener {
private EditText input;
private String str = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
input = new EditText(this);
}
public void onClickAlert(View v) {
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("New player")
.setMessage("Input new player's name")
.setView(input)
.setPositiveButton("Register", this)
.setNegativeButton("Cancel", null)
.show();
//variable str still equal to "" here
}
@Override
public void onClick(DialogInterface dialog, int which) {
str = input.getText().toString(); /*<---HERE! want to use this variable*/
//use it here
Log.d("Activity", "User input : " + str);
}
}
在您的Activity中实现OnClickListener
并读取回调函数中文本字段的值。