2015-08-04 3 views
0

Я использую этот класс от моей основной деятельности:Управление Android версии: с использованием различных классов для каждой версии

public class MediaInfo { 
    public String name; 
    public String label; 
    // ... (other String and int fields) 
    public MediaSession mSession; 
} 

внутри ArrayList:

public class MainActivity extends ActionBarActivity implements AsyncResponse { 

    private static final String TAG = "MainActivity"; 

    ArrayList<MediaInfo> myMediaList; 
    private Context mContext; 

    public void onCreate(Bundle savedInstanceState) { 
     // ... 
    } 

    // ... 
} 

Проблема у меня есть, что MediaSession является класс, который принадлежит Android API версии 21, и я пытаюсь сделать приложение с версии 14 на.

Я хотел бы, чтобы активность (или класс) игнорировала поле, содержащее класс MediaSession, когда версия < 21. Первая идея, с которой я столкнулся, - это использовать абстрактный класс и расширить его, когда версия> = 21, но тогда мне придется объявлять разные ArrayLists, и я не знаю, как это сделать. И, возможно, это не лучший способ ...

Любые идеи ...?

Спасибо за ваши советы

ответ

0

Проблема у меня есть, что MediaSession является классом, который принадлежит к Android API версии 21, и я пытаюсь сделать приложение с версии 14 на.

Глядя на Android support library, кажется, есть обратная совместимость версия MediaSession, называется MediaSessionCompat.

+0

Хорошо, спасибо, я буду искать его. Во всяком случае, в чем дело, если нет совместимой версии? Можно ли учесть поля классов для версии, а не для других ...? – xagutxu

+0

Как правило, если это важная функция, Google добавит совместимую версию. В противном случае вам нужно будет выполнить ответ Yair и проверить уровень API устройства перед использованием новой функции. Если API ниже, вам придется реализовать функциональность, используя старый/устаревший способ. Вы можете использовать новую функцию как объявленную переменную, просто нужно иметь в виду проверить уровень API перед ее использованием. Надеюсь, это поможет и счастливое кодирование! – user3829751

0

ответ пользователя3829751 хорошо подходит для этого случая.

Для этой общей проблемы я привел бы вас к этому вопросу: Programmatically obtain the Android API level of a device?

проверить также @TargetApi аннотацию. Вы можете извлечь «версию-21» в метод и вызвать его только в том случае, если время выполнения, если версия 21. Здесь вы можете увидеть пример: https://stackoverflow.com/a/18449951/3032209

+0

Спасибо, Яир. Однако проблема заключается не в том, как я могу получить номер версии (ваша ссылка объясняет, насколько она проста), но как я могу управлять разными классами в зависимости от номера версии. – xagutxu

Смежные вопросы