Java 使用android studio上的弹出式编辑文本为变量赋值
我试图在Android Studio上创建一个带有编辑文本字段的弹出框,并希望将用户输入的数据存储在该类中使用的变量中。 大概是这样的:Java 使用android studio上的弹出式编辑文本为变量赋值,java,android,android-edittext,Java,Android,Android Edittext,我试图在Android Studio上创建一个带有编辑文本字段的弹出框,并希望将用户输入的数据存储在该类中使用的变量中。 大概是这样的: new AlertDialog.Builder(this) .setIcon(android.R.drawable.ic_dialog_alert) .setTitle("New player") .setMessage("Input new player's n
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();
新建AlertDialog.Builder(此)
.setIcon(android.R.drawable.ic_对话框_警报)
.setTitle(“新玩家”)
.setMessage(“输入新玩家的名字”)
.setView(输入)
.setPositiveButton(“注册”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
name=input.getText().toString();//这样做:
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();
final String[]name=新字符串[1];
最终编辑文本输入=新编辑文本(本);
新建AlertDialog.Builder(此)
.setIcon(android.R.drawable.ic_对话框_警报)
.setTitle(“新玩家”)
.setMessage(“输入新玩家的名字”)
.setView(输入)
.setPositiveButton(“注册”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
名称[0]=input.getText().toString();您应该在活动内部声明DialogInterface.OnCLickListener。通过创建一个侦听器并分配它,或者让您的活动实现该接口。这样您就不需要将名称声明为final
您必须将name声明为final的原因是,您正在创建一个对象来侦听单击,这要求该匿名类使用的任何外部对象的约定必须声明为final
我建议您在活动中创建一个侦听器,然后将其分配给setOnClickListener(x)试试这个,它对我有用:
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);
}
}
公共类活动扩展AppCompatActivity实现DialogInterface.OnClickListener{
私密文本输入;
私有字符串str=“”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u结果);
输入=新编辑文本(本);
}
公共void onClickAlert(视图v){
新建AlertDialog.Builder(此)
.setIcon(android.R.drawable.ic_对话框_警报)
.setTitle(“新玩家”)
.setMessage(“输入新玩家的名字”)
.setView(输入)
.setPositiveButton(“寄存器”,此选项)
.setNegativeButton(“取消”,null)
.show();
//变量str在这里仍然等于“”
}
@凌驾
public void onClick(DialogInterface dialog,int which){
str=input.getText().toString();/*没有理由为此使用数组。不能将值赋给最终变量,但可以将值赋给数组。要在onClick()中使用它它必须是最终版本。@JoxTraex我很乐意学习一个更好、更简单的替代方案。如果你知道的话,一定要告诉我。上面你看到的是Android Studio建议的内容。顺便说一句:)看看我的帖子就这么简单吗?别这么想:)嗨,Jox。我是studio的新手。代码是什么样子的?不知道如何声明。因此,不简单…只是开玩笑而已