碎片化 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; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。