碎片化 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;
}
}