2

Я пишу приложение для Android, которое нужно запустить на Android 2.3.3 (фрагментирование фрагмента!). С этой версией, LinearLayout ввел дополнительный конструктор, поэтому я хочу, чтобы иметь возможность сделать что-то вроде этого:Обратная совместимость LinearLayout constructor

public class ActionMenuTextItemView extends LinearLayout 
{ 
    public ActionMenuTextItemView(Context context, AttributeSet attrs, int defStyle) 
    { 
     if (android.os.Build.VERSION.SDK_INT >= 11) 
      super(context, attrs, defStyle); 
     else 
      super(context, attrs); 
    } 

Это не работает, потому что super должна быть первой линией. Есть ли способ обойти это (кроме создания двух версий APK)? Очевидно, я, вероятно, в конечном итоге просто использую двухпараметрическую версию все время, но я хочу знать, есть ли лучший способ.

ответ

0

У вас могут быть два кондуктора, как показано ниже. Используйте один в прянике, а другой - в сотах и ​​выше.

public class ActionMenuTextItemView extends LinearLayout 
{ 
    @TargetApi(Build.VERSION_CODES.HONEYCOMB) 
    public ActionMenuTextItemView(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs, defStyle); 
    } 

    public ActionMenuTextItemView(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
    } 
} 
Смежные вопросы