2016-09-22 11 views
0

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です)。ではなぜ問題があるのですか?

+0

がclassname.this – Kushan

+0

を使用してみてくださいをあなたはより多くのコードを表示することができますか? – ligi

+0

完全な制御コードを添付してください。 –

答えて

2

Viewを返し、より具体的なViewGroup変数に割り当てようとしています。それが問題である親ビューとしてthisはありません - あなたは、戻り値のキャストが必要です。

defaultSetters = (ViewGroup)inflater.inflate(...) 
+0

もちろん!私は、IDEがメソッド呼び出し自体がエラーだと言っていると思っていましたが、変数の割り当てでした。ありがとうございました! – MegaWidget

関連する問題