我正在使用带有FragmentStatePagedAdapter的Tabs。以下代码来自onOptionsItemSelected(MenuItem item)
方法:
case R.id.menu_help:
System.out.println("Pressin' da help button!");
FragmentManager mananger = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction trans = mananger.beginTransaction();
trans.replace(android.R.id.content, new HelpFragment());
trans.addToBackStack(null);
trans.commit();
break;
然而, android.R.id.content
只会替换操作栏下方的视图(并将其覆盖在制表符片段上)。
有没有一种简单的方法如何用片段替换整个屏幕(不应该有其他系统资源?)而不必为此创建新的活动?或者新的活动会更好吗?
提前感谢您的帮助
容器布局(从MainActivity启动时启动):
<android.support.v4.view.ViewPager
android:id="@+id/masterViewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
我猜这是HelpFragment的类:
public class HelpFragment extends Fragment {
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle states) {
view = inflater.inflate(R.layout.layout_help_screen, container, false);
return view;
}
}
片段XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/nothing" />
</LinearLayout>
答案 0 :(得分:0)
更新:如果将appcompat-v7更新为版本19.0.0。或更新,则不再需要以下开关。请issue 59077了解更多信息。
我怀疑您使用的是运行Android版之前的设备/模拟器 4.x(Ice Cream Sandwich,API等级14)。我在使用片段交易时遇到了类似的重叠问题 。出现布局问题是因为与Android 4.x相比,Android 2.x和3.x上的内容视图的引用方式不同。请尝试更改您的代码:
trans.replace(android.R.id.content, new HelpFragment());
为:
trans.replace(getContentViewCompat(), new HelpFragment());
...
public static int getContentViewCompat() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH ?
android.R.id.content : R.id.action_bar_activity_content;
}
可以在post of Shellum。
中找到更多背景信息