我正在編寫擴展LinearLayout的自定義組件的代碼。它將在頂部包含一個微調器,並根據微調器的設置,在下面進行一些設置。即,當用戶在微調器上選擇「蘋果」時,出現「顏色」選項,並且當他們選擇「香蕉」時出現「長度」選項。將「this」作爲根傳遞給自定義組件中的LayoutInflater.inflate()
由於微調器選項可能具有許多與其關聯的設置,因此我使用「合併」作爲根標記在佈局XML中定義每組設置。然後我在每個構造函數中調用initViews()來擴充視圖,以便稍後添加/刪除它們。
下面是類代碼:
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);
}
}
我上標線這個錯誤:「不兼容類型:所需= ViewGroup中,找到=查看」。但LinearLayout根據this文檔擴展了ViewGroup。我甚至嘗試將「this」投射到一個ViewGroup,但奇怪的是IDE使投射變灰(因爲顯然,每個LinearLayout已經是一個ViewGroup)。那麼爲什麼會有問題呢?
嘗試使用classname.this – Kushan
可以告訴你更多的代碼? – ligi
請附上您的完整控制代碼。 –