我需要更改对话框的外观,以便我决定使用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
。
我该如何解决这个问题?
答案 0 :(得分:1)
可能findViewById
方法的布局错误(在活动布局中而不是对话框中)。
您可以尝试使用Dialog创建最终变量:
final AlertDialog dialog = builder.show();
然后在findViewById中使用它:
String url = ((EditText) dialog.findViewById(R.id.setServer)).getText().toString();