碎片化 Fragment 已经在 Android 开发中越来越受到重视,能够匹配不同屏幕,经常的做法是配置小屏幕设备进入的 Activity 之后的 XML 文件,使其加载 Fragment ,这样,在 Fragment 里面写的代码,无论是大屏幕还是小屏幕能用到相同的功能。
比如在 Activity 文件下如此:
public class FirstActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); } }
在相应的 XML 文件中添加这个组件:
<fragment android:id="@+id/first_fragment" android:name="com.xxx.FirstFragment" android:layout_height="match_parent" android:layout_width="match_parent" />
同时需要创建一个继承自 Fragment 的类,放置所有你需要放置的代码:
public class FirstFragment extends Fragment{ }
但是!但是!运行会报错:
【Java.lang.RuntimeException: Unable to start Activity... Binary XML File...】
看到这里,第一个反应就是 XML 文件出错了。没错,当 XML 文件中的 "android:name=" 填错的时候会有这样的现象,可更容易被忽略的是,Fragment 代码下缺少了必要的东西,那就是复写的onCreateView 方法。没有这个方法,就不会创建 Fragment 与其有关的 XML 文件之间的联系,更不用说 Activity 的 XML 直接引用 Fragment 的 XML 文件了。
所以需要补上:
public class FirstFragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.first_fragment,container,false); return view; } }