Android Lint说我可以用标签替换布局,但我需要在片段事务中使用布局的id

前端之家收集整理的这篇文章主要介绍了Android Lint说我可以用标签替换布局,但我需要在片段事务中使用布局的id前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 Android中有一个标签式界面,并在我的应用程序中使用FrameLayout作为我的主要布局.我收到一条Android Lint警告说:
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,我不能调用fragmentTransaction(),因为id在任何地方都不存在.

这是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" />

解决方法

如果这是活动布局文件中唯一的内容,请删除布局文件和setContentView()调用,并使用android.R.id.content作为FragmentTransaction的目标. android.R.id.content指向FrameLayout,这是setContentView()膨胀的地方.

此外,请注意,“L”开发人员预览版中不推荐使用操作栏标签,并且应在Android的下一个生产版本中保持弃用状态.您可能希望考虑使用另一个选项卡解决方案(例如,ViewPager和选项卡式指示器)或其他导航解决方案(例如,导航抽屉).

猜你在找的Android相关文章