1

こんにちは、画面にカスタム AlertDialog を表示しようとしています。ダイアログにレイアウトを拡張しています。このレイアウトには、2 つの TextView、1 つの RatingBar、および 1 つの EditText が含まれています。

ダイアログをポップアップしようとすると、次の例外が発生します。

E/AndroidRuntime(12989): android.view.InflateException: バイナリ XML ファイルの行 #25: クラス android.widget.EditText の膨張エラー

重要な点は、このエラーが Android 2.3.x デバイスで発生し、Android 4.x で問題なく動作することです。

dialog_comment.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RatingBar
        android:id="@+id/DialogCommentRatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:stepSize="1" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/DialogCommentRatingBar"
        android:text="Yorumunuz"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/DialogCommentComment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView2"
        android:background="?android:attr/editTextBackground"
        android:ems="10"
        android:gravity="top"
        android:inputType="textMultiLine" >
    </EditText>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Oyunuz"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

CommentDialog.java

@Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        LayoutInflater inflater=getActivity().getLayoutInflater();
        final View view=inflater.inflate(R.layout.dialog_comment, null);

        final RatingBar rating=(RatingBar)view.findViewById(R.id.DialogCommentRatingBar);
        final EditText comment=(EditText)view.findViewById(R.id.DialogCommentComment);      

        AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());

        builder.setView(view);

        builder.setTitle("Enter Your Comment!");
        return builder.create();

    }

AlertDialog を表示する方法

        FragmentManager fm = getSupportFragmentManager();
        CommentDialog commentDialog = new CommentDialog();
        commentDialog.show(fm, "fragment_comment_dialog");
4

2 に答える 2

1

交換

android:textAppearance="?android:attr/textAppearanceLarge"

android:textAppearance="@android:style/TextAppearance.Large"
于 2013-07-22T08:38:49.393 に答える
0

EditView (プレーン テキスト テキスト フィールド) を削除し、別のものを content_....xml にドロップし、今回はスタイルを変更しませんでした。EditView のデフォルトのスタイリングですべてが正しく実行されました。

于 2016-02-16T23:49:04.017 に答える