LinearLayoutを拡張するカスタムコンポーネントのコードを記述しています。 Spinnerの設定に応じて、上部にSpinner、下部にいくつかの設定が含まれます。すなわち、ユーザがスピナー上で「アップル」を選択すると、「カラー」オプションが表示され、「バナナ」を選択すると、「長さ」オプションが表示される。カスタムコンポーネントのLayoutInflater.inflate()に "this"を渡します。
スピナーオプションには多くの設定が関連付けられている可能性があるため、「マージ」をルートタグとしてレイアウトXMLに各設定グループを定義します。次に、各コンストラクタでinitViews()を呼び出して、後でビューを追加/削除できるようにビューを拡張します。ここで
は、クラスのコードです:「互換性のないタイプ::必須=のViewGroup、=ビューが見つかりました」
public class SchedulePickerView extends LinearLayout {
protected Context context;
protected Spinner typeSpinner;
protected ViewGroup defaultSetters; // ViewGroup to show when no schedule is selected in the spinner
protected ViewGroup simpleSetters; // ViewGroup to show when SimpleSchedule is selected in the spinner
public SchedulePickerView(Context context) {
super(context);
this.context = context;
initViews();
}
public SchedulePickerView(Context context, AttributeSet attr) {
super(context, attr);
this.context = context;
initViews();
}
public SchedulePickerView(Context context, AttributeSet attr, int defstyle) {
super(context, attr, defstyle);
this.context = context;
initViews();
}
private void initViews() {
// Init typeSpinner
typeSpinner = (Spinner) findViewById(R.id.schedulepickerSpinner);
// Init setters (ViewGroups that show settings for the various types of schedules
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// ERROR IS ON THIS LINE:
defaultSetters = inflater.inflate(R.layout.container_schedulesetter_default, this);
}
}
私はマークされた行に、このエラーが発生します。しかし、LinearLayoutは、thisドキュメントに従って、ViewGroupを拡張しています。私はViewGroupに "this"をキャストしようとしましたが、間違いなくIDEがキャストをグレーアウトしました(明らかに、すべてのLinearLayoutは既にViewGroupです)。ではなぜ問題があるのですか?
がclassname.this – Kushan
を使用してみてくださいをあなたはより多くのコードを表示することができますか? – ligi
完全な制御コードを添付してください。 –