Android片段无效

我正在尝试在android中实现一个简单的片段。

我尝试了各种方法,唯一一次我没有得到错误的是当我从布局中完全删除片段时。 除此之外,我已经删除了inflate,并尝试手动创建一个布局,但也无法正常工作。

只是从布局中删除fragment似乎会使应用程序加载,无论我做什么,应用程序崩溃。

我一直收到以下错误:

12-29 04:52:07.493:E / AndroidRuntime(11717):java.lang.RuntimeException:无法恢复活动{com.p5sys.android.jump / com.p5sys.android.jump.lib.activities.DisplayContactList}: android.view.InflateException:二进制XML文件行#9:错误膨胀类片段

在上面的错误stacktrace之后我也得到以下错误(只是分享它有帮助)。

12-29 04:52:07.493:E / AndroidRuntime(11717):引起:java.lang.IllegalArgumentException:二进制XML文件行#9:复制id 0x7f090023,标记null或父id 0x0与com.p5sys的另一个片段.android.jump.lib.fragment.HeaderFragment

我的布局contact_layout.xml是一个LinearLayout,里面有一个fragmentListView

    

片段布局header_fragment.xml是:

      

我的片段类:

 package com.p5sys.android.jump.lib.fragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import com.p5sys.android.jump.lib.R; /*** * Fragment * @author Ali * */ public class HeaderFragment extends Fragment { @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // inflate layout return inflater.inflate(R.layout.header_fragment, container, false); // LinearLayout ll = new LinearLayout(getActivity()); // TextView tv = new TextView(getActivity()); // tv.setText("hello world"); // ll.addView(tv); // return ll; } } 

在我的Activity中,我没有做任何特别的事情,我尝试过使用常规ActivityFragmentActivity ,我遇到了同样的问题。

任何帮助将非常感激。

我自己从未对这种方法好运。 此外,如果您希望在布局中的同一位置实例化多种类型的片段,或者用手指(通过ViewPager )等扫描片段的许多实例,那么您将不得不以不同的方式执行此操作。

所以这就是我的工作:1)使用FrameLayout为片段保留空间。

  

2)使用以下Java代码实例化Fragment:

 FragmentManager fragMgr = getFragmentManager(); FragmentTransaction xact = fragMgr.beginTransaction(); if (null == fragMgr.findFragmentByTag(myFragTag)) { xact.add(R.id.where_i_want_my_fragment, MyDerivedFragment.newInstance(), myFragTag).commit(); } 

myFragTag是您需要提供的String值。 它是您要分配给Fragment实例的标记名称,类似于HTML中的“id”属性。 如果你只有一个Fragment实例,那么你可以随意调用它; 否则,最好将标记名称指定为与特定实例出现的内容相关的内容。

不要忘记最后的commit()部分,否则它将无法正常工作!

如果您想要与您的片段进行交互(甚至可能与您的片段进行交互),您的活动需要是片段活动。

您收到此错误的原因是TableRow不是有效的父级。 您需要使用某种ViewGroup布局。 我不知道为什么你在这里使用tablerow,但你不应该使用它。 尝试使用水平线性布局。 如果目标是具有均匀间距,则在xml中为布局权重提供1。

否则你发布的内容看起来不错……