使用android studio上的弹出编辑文本为变量赋值

时间:2016-01-18 18:11:17

标签: 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 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的值以在主代码中使用它?

3 个答案:

答案 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并读取回调函数中文本字段的值。