3

У меня есть интерфейс с вкладками в Android и использование FrameLayout в качестве основного макета в моем приложении. Я получаю предупреждение Android Lint, который говорит:Android Lint говорит, что я могу заменить макет тегом <merge>, но мне нужен идентификатор макета в транзакции фрагмента

This <FrameLayout> can be replaced with a <merge\> tag 

Единственное место, где я использую этот FrameLayout (названный fragmentContainer) в слушателе onTabSelected. Вот упрощенная версия.

@Override 
public void onTabSelected(ActionBar.Tab tab, 
     FragmentTransaction fragmentTransaction) { 
    // When the given tab is selected, show the tab contents in the 
    // container 
    Fragment fragment; 
    String tag; 
    switch (tab.getPosition()) { 

    case 0: 
     fragment = new myFragment1(); 
     tag = "myFragment1"; 
     break; 

    case 1: 
     fragment = new new myFragment2(); 
     tag = "myFragment2"; 
     break; 

    default: 
     Log.d(TAG, "invalid tab selected: " + tab.getPosition()); 
     break; 
    } 
    fragmentTransaction.replace(R.id.fragmentContainer, fragment, tag); 
} 

Это хорошо работает, но я хотел бы, чтобы повысить производительность, если это возможно, и избавиться от любых Lint предупреждений я могу. Если я заменил FrameLayout тегом слияния, я не могу вызвать этот фрагментTransaction(), потому что идентификатор не существует нигде.

Вот FrameLayout для полноты:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/fragmentContainer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" /> 

ответ

5

Если это единственное, что в файле макета вашей деятельности, в избавиться от файла макета и вашего setContentView() вызова, а также использовать android.R.id.content в качестве цели вашего FragmentTransaction. android.R.id.content указывает на FrameLayout, где setContentView() раздувается.

Также обратите внимание, что вкладки панели действий устарели в представлении разработчика «L» и должны оставаться устаревшими в следующей производственной версии Android. Возможно, вы захотите рассмотреть использование другого решения табуляции (например, ViewPager и индикатор с вкладками) или другое навигационное решение (например, навигационный ящик).

+0

Это сработало отлично. Спасибо за помощь (и удручающие новости о вкладках в панели действий). – DruLang