Android 自定义对话框中的按钮赢得';不回答

Android 自定义对话框中的按钮赢得';不回答,android,Android,我正在尝试为应用程序的设置创建一个自定义对话框,问题是,自定义按钮、EditText和微调器不响应用户活动。我希望有人能帮忙。 这是我的密码: public class SettingsDialog extends DialogFragment { private EditText editText; private Spinner ipSpinner; private MainActivity mainActivity; private Settings settings; private

我正在尝试为应用程序的设置创建一个自定义对话框,问题是,自定义按钮、EditText和微调器不响应用户活动。我希望有人能帮忙。 这是我的密码:

public class SettingsDialog extends DialogFragment  {
private EditText editText;
private Spinner ipSpinner;
private MainActivity mainActivity;
private Settings settings;
private int selectedIP;

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();
    final View dialogView = inflater.inflate(R.layout.dialog_settings, null);
    mainActivity = (MainActivity) getActivity();
    settings = mainActivity.getSettings();
    selectedIP = settings.getSelectedIP();
    editText = (EditText) dialogView.findViewById(R.id.edit_text_ip);
    ipSpinner = (Spinner) dialogView.findViewById(R.id.spinner_ip);
    ImageButton imageButton = (ImageButton) dialogView.findViewById(R.id.image_button_save_ip);
    imageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String IP = editText.getText().toString();
            settings.setIP(selectedIP, IP);
            settings.settingsSave();
            mainActivity.showToast("IP at " + Integer.toString(selectedIP) + " with value" + IP);
        }
    });
    ipSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            selectedIP = position;
            editText.setText(settings.getIP(selectedIP));
            mainActivity.showToast(Integer.toString(position));
            settings.settingsSave();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
            return;
        }

    });
    builder.setView(inflater.inflate(R.layout.dialog_settings, null))

            .setPositiveButton("Save", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    String IP = editText.getText().toString();
                    settings.setIP(selectedIP, IP);
                    settings.settingsSave();
                    mainActivity.showToast("IP at " + Integer.toString(selectedIP) + " with value" + IP);
                }
            })
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    SettingsDialog.this.getDialog().cancel();
                }
            });
    return builder.create();
}
公共类设置Dialog扩展DialogFragment{
私人编辑文本;
私人纺纱机;
私人活动;
私人设置;
私有int-selectedIP;
@凌驾
创建对话框上的公共对话框(Bundle savedInstanceState){
AlertDialog.Builder=新建AlertDialog.Builder(getActivity());
LayoutFlater充气机=getActivity().GetLayoutFlater();
最终视图对话框视图=充气机。充气(R.layout.dialog\u设置,空);
mainActivity=(mainActivity)getActivity();
settings=mainActivity.getSettings();
selectedIP=settings.getSelectedIP();
editText=(editText)dialogView.findViewById(R.id.edit\u text\u ip);
ipSpinner=(微调器)dialogView.findViewById(R.id.Spinner\u ip);
ImageButton ImageButton=(ImageButton)dialogView.findViewById(R.id.image\u button\u save\u ip);
imageButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串IP=editText.getText().toString();
settings.setIP(选择edip,IP);
settings.settingsSave();
mainActivity.showtoos(“IP位于”+Integer.toString(selectedIP)+”,值为“+IP”);
}
});
setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图selectedItemView、整型位置、长id){
选择EDIP=位置;
editText.setText(settings.getIP(selectedIP));
mainActivity.showtoos(整数.toString(位置));
settings.settingsSave();
}
@凌驾
未选择公共无效(AdapterView父视图){
返回;
}
});
builder.setView(充气机.充气(R.layout.dialog\u设置,空))
.setPositiveButton(“保存”,新建DialogInterface.OnClickListener()){
@凌驾
public void onClick(DialogInterface对话框,int-id){
字符串IP=editText.getText().toString();
settings.setIP(选择edip,IP);
settings.settingsSave();
mainActivity.showtoos(“IP位于”+Integer.toString(selectedIP)+”,值为“+IP”);
}
})
.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
public void onClick(DialogInterface对话框,int-id){
设置Dialog.this.getDialog().cancel();
}
});
返回builder.create();
}
}

和对话框的我的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="IP-address"
    android:textAllCaps="true" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <Spinner
        android:id="@+id/spinner_ip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:entries="@array/spinner_ip_visual"
        android:entryValues="@array/spinner_ip_values" />

    <EditText
        android:id="@+id/edit_text_ip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="8" />

    <ImageButton
        android:id="@+id/image_button_save_ip"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@null"
        android:src="@drawable/ic_done_black_24dp"/>
</LinearLayout>


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="unit"
    android:textAllCaps="true" />

<RadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <RadioButton
        android:id="@+id/button_unit_celsius"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="Celsius"
        android:textAllCaps="true" />

    <RadioButton
        android:id="@+id/button_unit_fahrenheit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fahrenheit"
        android:textAllCaps="true" />
</RadioGroup>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onButtonClickGenerateRandomData"
    android:text="Generate random data"
    android:textAllCaps="true" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onButtonClickDropDatabase"
    android:text="delete weatherdata"
    android:textAllCaps="true" />


感谢您的建议

您正在膨胀dialogView,然后为dialogView中的视图设置侦听器,但是,当您为DialogBuilder设置视图时,会膨胀新视图

这是错误的

 builder.setView(inflater.inflate(R.layout.dialog_settings, null))
这是正确的

 builder.setView(dialogView)

您正在展开dialogView,然后为dialogView中的视图设置侦听器,但是当您为DialogBuilder设置视图时,会展开新视图

这是错误的

 builder.setView(inflater.inflate(R.layout.dialog_settings, null))
这是正确的

 builder.setView(dialogView)