Java Android片段不显示
我对安卓开发相当陌生,我遵循了安卓官方的“入门” 事实上,我的片段没有显示在主要活动中(几天前它运行良好,但我更改了一些行,我不记得是哪一行)。我认为这是一个非常基本的问题,因为我不使用复杂的片段:它基本上是活动中的一个片段 这是我的活动:Java Android片段不显示,java,android,android-fragments,Java,Android,Android Fragments,我对安卓开发相当陌生,我遵循了安卓官方的“入门” 事实上,我的片段没有显示在主要活动中(几天前它运行良好,但我更改了一些行,我不记得是哪一行)。我认为这是一个非常基本的问题,因为我不使用复杂的片段:它基本上是活动中的一个片段 这是我的活动: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container1"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mysecond.MainActivity"
tools:ignore="MergeRootFrame" />
有什么想法吗?
谢谢:)
[编辑]
这是我新的onCreate方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportFragmentManager().beginTransaction().replace(
R.id.container1, new PlaceholderFragment()).commit();
}
仍然不适用于此活动(如果我在activity_main.xml中添加一个按钮,我将能够看到它,但在片段中我无法看到TextView…)
logcat中没有错误,是的,活动已启动(我在onCreate和onCreateView中添加了一些Log.e,我可以看到它们)在
onCreate
方法中,您不必检查savedInstanceState
是否为null
,但您使用的FrameLayout
的内容是否为null
或者,您只需始终使用新的片段替换片段并执行任何检查。您可以使用replace
而不是add
您可以按如下所示的代码进行操作:
getSupportFragmentManager().beginTransaction().replace(
R.id.container1, new PlaceholderFragment());
对我来说,这项工作。使用init()方法实现接口FragmentActions并使用
private void showFragment(String fragmentTag){
FragmentTransaction trasaction = getSupportFragmentManager().beginTransaction();
FragmentActions fragment = (FragmentActions) getSupportFragmentManager().findFragmentByTag(fragmentTag);
if(fragment==null ){
if(lastFragmentviewed!=null)
trasaction.hide(lastFragmentviewed);
fragment = (FragmentActions) newInstance(fragmentTag);
trasaction.add(R.id.content_frame,(Fragment) fragment,fragmentTag);
}else{
if(lastFragmentviewed!=null && !lastFragmentviewed.equals(fragment))
trasaction.hide(lastFragmentviewed);
if(getSupportFragmentManager().findFragmentByTag(fragmentTag)!=null){
fragment.init();
trasaction.show((Fragment) fragment);
}else
trasaction.add(R.id.content_frame,(Fragment) fragment,fragmentTag);
}
lastFragmentviewed=(Fragment) fragment;
trasaction.commit();
}
然后发布日志。代码看起来不错,没有明显的错误。活动是否正在启动,即代码是否首先运行?
getSupportFragmentManager().beginTransaction().replace(
R.id.container1, new PlaceholderFragment());
private void showFragment(String fragmentTag){
FragmentTransaction trasaction = getSupportFragmentManager().beginTransaction();
FragmentActions fragment = (FragmentActions) getSupportFragmentManager().findFragmentByTag(fragmentTag);
if(fragment==null ){
if(lastFragmentviewed!=null)
trasaction.hide(lastFragmentviewed);
fragment = (FragmentActions) newInstance(fragmentTag);
trasaction.add(R.id.content_frame,(Fragment) fragment,fragmentTag);
}else{
if(lastFragmentviewed!=null && !lastFragmentviewed.equals(fragment))
trasaction.hide(lastFragmentviewed);
if(getSupportFragmentManager().findFragmentByTag(fragmentTag)!=null){
fragment.init();
trasaction.show((Fragment) fragment);
}else
trasaction.add(R.id.content_frame,(Fragment) fragment,fragmentTag);
}
lastFragmentviewed=(Fragment) fragment;
trasaction.commit();
}