0

我的目标是在用户单击它时更改 a 的文本,TextView并将其替换为用户输入的玩家名称。所以我加了一个OnClickListener。所以点击我提示Dialog用户输入。

private void setPlayerName(TextView textView) {
    AlertDialog.Builder alert = new AlertDialog.Builder(this);

    alert.setTitle("Title");
    alert.setMessage("Enter Player1 Name");

    // Set an EditText view to get user input 
    final EditText inputText = new EditText(this);
    alert.setView(inputText);

    alert.setPositiveButton("Ok", new inputclickListener(textView));

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            dialog.cancel();
        }
    });

    alert.show();
}

现在 inputclickListener 类的代码如下

class inputclickListener implements android.content.DialogInterface.OnClickListener {

    TextView textView;

    public inputclickListener(TextView textView){
        this.textView = textView;
    }


    @Override
    public void onClick(DialogInterface dialog, int which) {
        //String value = inputText.getText().toString();    //Here I need reference to inputtext
        if(value != null && value.length()>0) {
            textView.setText(value);
        }

    }

}

正如inputclickListener类中代码的注释中提到的,我需要对 inputText 的引用,这是一个EditText视图。我的问题是,鉴于我们有对它的引用,我如何才能获得该引用Dialog(我认为这应该是 Views/EditText 父级..如果我错了,请纠正我)?

4

2 回答 2

1

对于这种情况,我将使用匿名类作为侦听器以加快编码速度。

private void setPlayerName(final TextView textView) {
    AlertDialog.Builder alert = new AlertDialog.Builder(this);

    alert.setTitle("Title");
    alert.setMessage("Enter Player1 Name");

    // Set an EditText view to get user input 
    final EditText inputText = new EditText(this);
    alert.setView(inputText);

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener(){
        public void onClick(DialogInterface dialog, int whichButton) {
            final String value = inputText.getText().toString();
            if(value != null && value.length()>0) {
                textView.setText(value);
            }
        }
    });

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            dialog.cancel();
        }
    });

    alert.show();
}
于 2013-11-13T07:38:36.267 回答
0

将 a 添加TextWatcher到 并将您收到addTextChangedListenerinputText任何数据传递onTextChangedinputclickListenerobject 。

于 2013-11-13T07:35:24.327 回答