Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用android studio上的弹出式编辑文本为变量赋值_Java_Android_Android Edittext - Fatal编程技术网

Java 使用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

我试图在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();
新建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的新手。代码是什么样子的?不知道如何声明。因此,不简单…只是开玩笑而已