Dru*_*ang 6 android android-fragments android-lint fragmenttransaction
我在Android中有一个标签式界面,并在我的应用程序中使用FrameLayout作为我的主要布局.我收到一条Android Lint警告说:
This <FrameLayout> can be replaced with a <merge\> tag
Run Code Online (Sandbox Code Playgroud)
我使用此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);
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但我希望尽可能提高性能,并尽可能摆脱任何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" />
Run Code Online (Sandbox Code Playgroud)
如果这是您活动的布局文件中唯一的内容,请删除布局文件和您的setContentView()调用,并将其android.R.id.content用作您的目标FragmentTransaction.android.R.id.content指向FrameLayout那是setContentView()膨胀的地方.
此外,请注意,"L"开发人员预览版中不推荐使用操作栏标签,并且应在Android的下一个生产版本中保持弃用状态.您可能希望考虑使用另一个选项卡解决方案(例如,ViewPager选项卡式指示器)或其他导航解决方案(例如,导航抽屉).
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |