У меня есть интерфейс с вкладками в 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" />
Это сработало отлично. Спасибо за помощь (и удручающие новости о вкладках в панели действий). – DruLang