2017-01-07 12 views
9

私はカスタムレイアウトの警告ダイアログを作成しましたが、それはうまくいきますが、単一の選択肢を設定しようとするとそこから私は警告ダイアログ

<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> 

を膨張させるんだXMLファイル:アイテムは、それが 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(); 

UPDATEを与えるalertDialogBu​​ilderします

コードは、それがインスタンスされていないの サブクラスにオブジェクトをキャストしようとしたことを示すためにスローされ

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; 
+0

私は 'xml'ファイルと再構築を追加して、あなたのxmlと輸入コード –

+1

@IntelliJAmiyaが – rookieDeveloper

+0

大丈夫しなさいシェア輸入コード –

答えて

8

ClassCastException

を質問に関連インポート。

import android.support.v7.app.AlertDialog; 

をしないで

import android.app.AlertDialog 

NOTE

あなたは的support.v7ですライブラリ。 ネイティブライブラリを呼び出します。

+1

'import android.support.v7.app.AlertDialog'を' import android.app.AlertDialog'に変更しました。私の問題を解決しました。ライブライブラリ – rookieDeveloper

+1

@rookieDeveloper私は問題を推測します。 –

+1

しかし、サポートバージョンを使用する理由があります!私はまったく同じ問題を抱えていました。私のコードはうまくいきました。問題は、サポートライブラリの新しいバージョンが付属しています! – Zordid

2

@Zordidが正しい。これは、サポートライブラリ25を使用している場合のAOSPのバグです。別のバージョンのサポートライブラリを使用してみるか、修正を待ちます。 AOSPの問題にも回避策が掲載されています。

Link to AOSP issue

1

この問題を修正する新しいサポートライブラリのバージョン25.4.0があります。

このライブラリがリリースされたばかりなので、リポジトリセクションに「https://maven.google.com」という名前のセクションが含まれていることを確認してください。

allprojects { 
    repositories { 
     jcenter() 
     maven { 
     url "https://maven.google.com" 
     } 
    } 

}

関連する問題