在弹出的对话框中获取用户字符串

Yot*_*tam 3 android android-layout

在我的Android代码中,我给GUI充气并将所有子元素存储在不同的类中.在该类中,我想添加一个方法来读取用户输入.我尝试按照这个链接中的内容进行操作,但无论我做什么,它都归结为将最终值复制到非最终值.我虽然想创造另一个gui但是无法用这种方式来制作.这是我现在的方法:

private String setText(int id){
        AlertDialog.Builder alert = new AlertDialog.Builder(this.show);
        final EditText input = new EditText(this.show);
        alert.setView(input);
        String out;
        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            //@Override
            public void onClick(DialogInterface dialog, int which) {
                Editable value = input.getText();
                out = value.toString();
                // TODO Auto-generated method stub

            }
        });

    }
}
Run Code Online (Sandbox Code Playgroud)

我用它来将一个字符串返回到另一个设置值的方法TextView.


我试着做以下几招:

private String setText(){

    AlertDialog.Builder alert = new AlertDialog.Builder(this.show);
    final EditText input = new EditText(this.show);
    alert.setView(input);
    String out;
    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            input.setText("canceled");
        }
    });
    alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {


        }
    });
    alert.show();
    String toSend = input.getText().toString();
    this.maxT.setText(toSend);
    return toSend;
Run Code Online (Sandbox Code Playgroud)

maxT是一个TextView领域.该应用程序只是放置一个空字符串.我想我应该等到AlertDialog关闭,我正在寻找一种方法.

Blu*_*ell 6

只需设置视图的ID并引用它:

private String setText(int id){
    AlertDialog.Builder alert = new AlertDialog.Builder(this.show);
    EditText input = new EditText(this.show);
    input.setId("myInput");        
    alert.setView(input);
    String out;
    alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        //@Override
        public void onClick(DialogInterface dialog, int which) {
            EditText input = (EditText) dialog.findViewById("myInput");
            Editable value = input.getText();
            out = value.toString();               

        }
    });

}
Run Code Online (Sandbox Code Playgroud)

}

查看:setId()API

对话框onClick:onClick()API

  • DialogInterface 上没有“findViewbyId”。应该是 `getActivity().findViewById` (2认同)