ClassCastException:android.support.v7.widget.LinearLayoutCompat $ LayoutParams无法强制转换为android.widget.LinearLayout $ LayoutParams

roo*_*per 11 android android-layout android-alertdialog

我已经创建了一个带有自定义布局的警告对话框,它工作正常但是当我尝试将单个选项设置为alertDialogBu​​ilder时它会ClassCastException: android.support.v7.widget.LinearLayoutCompat$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams出错

    View viewDialog = LayoutInflater.from(this).inflate(R.layout.dialog_verify, null,false);

    alertDialogBuilder.setView(viewDialog);

    final TextView tvDialogTitle = (TextView) viewDialog.findViewById(R.id.dialog_textview_title);

    final Button btnCancel = (Button) viewDialog.findViewById(R.id.dialog_btn_cancel);
    final Button btnVerify = (Button) viewDialog.findViewById(R.id.dialog_btn_verify);
    btnCancel.setVisibility(View.GONE);
    btnVerify.setText("cancel");
    btnVerify.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));
    btnVerify.setBackgroundResource(R.drawable.round_white);


    //set single layout structure
    alertDialogBuilder.setSingleChoiceItems(arrayReportType, selectedIndex, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            selectedIndex=which;
            tvReportStatus.setText(arrayReportType[selectedIndex]);
            dialog.dismiss();
        }
    });
    alertDialogBuilder.setCancelable(true);
    Typeface font_bold = Typeface.createFromAsset(getAssets(), Constants.FONT_BOLD);
    tvDialogTitle.setTypeface(font_bold);
    tvDialogTitle.setText("Summary");
    final AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.show();
Run Code Online (Sandbox Code Playgroud)

更新:XML文件,我正在通过它来提升警报对话框

    <TextView
        android:id="@+id/dialog_textview_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:layout_marginBottom="20dp"/>


<LinearLayout
    android:id="@+id/dialog_ll_buttons"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingLeft="15dp"
    android:paddingRight="15dp">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <Button

            android:fontFamily="sans-serif-light"
            android:id="@+id/dialog_btn_cancel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="16dp"
            android:background="@drawable/round_white"
            android:text="Cancel"
            android:textAppearance="@style/TextAppearance.AppCompat.Medium"
            android:textColor="@color/colorAccent" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <Button
            android:fontFamily="sans-serif-light"
            android:id="@+id/dialog_btn_verify"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="16dp"
            android:background="@drawable/round_blue"
            android:textAppearance="@style/TextAppearance.AppCompat.Medium"
            android:textColor="@color/white" />
    </LinearLayout>

   </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

导入与问题有关

import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.TimePicker;

import org.json.JSONException;
import org.json.JSONObject;
Run Code Online (Sandbox Code Playgroud)

Int*_*iya 9

ClassCastException异常

抛出以指示代码已尝试将对象强制转换为不是实例的子类.

import android.support.v7.app.AlertDialog;
Run Code Online (Sandbox Code Playgroud)

import android.app.AlertDialog
Run Code Online (Sandbox Code Playgroud)

注意

你是cally support.v7图书馆.调用本机库.

  • @IntelliJ Amira这就是为什么这根本不是解决方案!问题是在支持库的v25中引入的,它在v24中不存在!有人使用支持AlertDialog这样做是出于某种原因而不是为了好玩.因此,我看不出这是一个有效的解决方案......对不起! (3认同)