有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将数据从对话框传递到活动Android

我有问题。 我用自己的布局创建了一个对话框。我不知道如何将EditText和asing中的值(字符串)传递给活动中的任何变量。 在评论中你可以看到我是如何试图解决这个问题的

Java方法

public void makeDialog(){
        // custom dialog
        final Dialog dialog = new Dialog(context);
        dialog.setContentView(R.layout.dialog_ip);
        dialog.setTitle("IP connection");

// Todo passing value from dialog to activity
//        final EditText ipValueConnection = (EditText)findViewById(R.id.ipValueConnection);
//        ipValueConnection.setOnClickListener(this);
//        EditText portValueConnection = (EditText)findViewById(R.id.portValueConnection);
//        Toast.makeText(context, ipValueConnection.getText().toString(), Toast.LENGTH_LONG).show();

        Button dialogButtonLogin = (Button) dialog.findViewById(R.id.dialogButtonLogin);
        // if button is clicked, close the custom dialog
        dialogButtonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                tryToConnect();
                dialog.dismiss();

            }
        });




        // set the custom dialog components - text, image and button
//        TextView text = (TextView) dialog.findViewById(R.id.IP);

        dialog.show();

    }

XML布局

<LinearLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    安卓:orientation="vertical"
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content">
    <ImageView
        安卓:src="@drawable/antena"
        安卓:layout_width="220dp"
        安卓:layout_height="120dp"
        安卓:scaleType="centerInside"
        安卓:background="#FFFFBB33"
        安卓:contentDescription="@string/app_name"
        安卓:adjustViewBounds="true"

        />
    <EditText
        安卓:id="@+id/ipValueConnection"
        安卓:inputType="textEmailAddress"
        安卓:layout_width="match_parent"
        安卓:layout_height="wrap_content"
        安卓:layout_marginTop="16dp"
        安卓:layout_marginLeft="4dp"
        安卓:layout_marginRight="4dp"
        安卓:layout_marginBottom="4dp"
        安卓:hint="IP" />
    <EditText
        安卓:id="@+id/portValueConnection"
        安卓:inputType="textPassword"
        安卓:layout_width="match_parent"
        安卓:layout_height="wrap_content"
        安卓:layout_marginTop="4dp"
        安卓:layout_marginLeft="4dp"
        安卓:layout_marginRight="4dp"
        安卓:layout_marginBottom="16dp"
        安卓:fontFamily="sans-serif"
        安卓:hint="PORT"/>
    <Button
        安卓:id="@+id/dialogButtonLogin"
        安卓:layout_width="match_parent"
        安卓:layout_height="wrap_content"
        安卓:text="Login"
        安卓:layout_marginTop="5dp"
        />
</LinearLayout>

共 (2) 个答案

  1. # 1 楼答案

    创建一个接口

    public interface OnClickInterface {
    
        public void onClick();
    }
    

    调用它在活动onCreate()中实例化它

     OnClickInterface onClickInterface = new OnClickInterface() {
                @Override
                public void onClick() {
                   //Call Method from here
                    requiredMethod();
                }
            };
    

    //在对话框类或方法中

    public void makeDialog(OnClickInterface onClickInterface){
    //Your code
    
     dialogButtonLogin.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                 onClickInterface.onClick();
    
    
                    dialog.dismiss();
    
                }
            });
    }
    
  2. # 2 楼答案

    您收到的错误意味着在当前布局文件中找不到对editText的引用。您可以在“自定义对话框”视图而不是“活动”视图中找到编辑文本

    因此,与其说:

     final EditText ipValueConnection =(EditText)findViewById(R.id.ipValueConnection);
    

    使用:

     final EditText ipValueConnection =(EditText)dialog.findViewById(R.id.ipValueConnection);