自定义对话框生成器可以查找项目

时间:2014-09-02 10:00:38

标签: android android-layout android-custom-view android-dialog

我需要更改对话框的外观,以便我决定使用QustomDialog

我通过setCustomView使用自定义布局,但是当我处理onBalton按钮时,我无法找到布局中的任何元素。

布局包含EditText:

<?xml version="1.0" encoding="utf-8"?>

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

    <EditText
        android:id="@+id/setServer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/server_url" />

</LinearLayout>

听众是:

QustomDialogBuilder builder = new QustomDialogBuilder(this);
/* Some customization */
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String url = ((EditText) findViewById(R.id.setServer)).getText().toString();
                    if (Utilities.isUrl(url)) {
                        PreferenceHelper.setRestUrl(getApplicationContext(), url);
                    } else {
                        Toast.makeText(getApplicationContext(), "Invalid URL", Toast.LENGTH_SHORT);
                    }
                }
            });

但是当我按下#34; OK&#34;我得到java.lang.ClassCastException: com.android.internal.view.menu.ActionMenuItemView cannot be cast to android.widget.EditText

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

可能findViewById方法的布局错误(在活动布局中而不是对话框中)。

您可以尝试使用Dialog创建最终变量:

final AlertDialog dialog = builder.show();

然后在findViewById中使用它:

String url = ((EditText) dialog.findViewById(R.id.setServer)).getText().toString();