谷歌搜索我看到许多声明嵌套片段不能使用 XML。现在我是 Android 新手,但我的应用程序使用带有嵌套片段的 XML。我还没有让监听器和接口工作(也许这就是人们说你不能使用 XML 的原因),但是 GUI 工作。
我的问题:我读到的关于不将 XML 用于嵌套片段的评论是什么意思?
这里有一个链接到一个声明 XML 不能与嵌套片段一起使用:
下面的代码创建了 3 个无线电组(每个在一个片段中),水平排列在顶部(在另一个片段中),下面有一个列表视图(在另一个片段中)。片段可以很好地控制不同显示类型的外观。
这是我的代码:
public class SetupNew extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ngs);
}}
ngs.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<fragment android:id="@+id/frag_options_all"
android:layout_height="250dp"
android:layout_width="fill_parent"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:name="com.EXAMPLE.frag_class_options_all"/>
<fragment android:id="@+id/frag_select_opponent"
android:layout_height="fill_parent"
android:layout_marginLeft="5dp"
android:layout_marginTop="10dp"
android:layout_width="fill_parent"
android:name="com.EXAMPLE.frag_class_opponents"/>
</LinearLayout>
frag_class_options_all.java
public class frag_class_options_all extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.options_all, container, false);
return view;
}}
frag_class_opponents.java
public class frag_class_opponents extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
//working contact listview
}
options_all.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<fragment android:id="@+id/frag_options"
android:layout_height="fill_parent"
android:layout_width="80dp"
android:layout_marginRight="15dp"
android:name="com.EXAMPLE.frag_class_options"/>
<fragment android:id="@+id/frag_ship_limit"
android:layout_height="fill_parent"
android:layout_width="75dp"
android:layout_marginRight="15dp"
android:name="com.EXAMPLE.frag_class_limit_options"/>
<fragment android:id="@+id/frag_allowable_ship"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:name="com.EXAMPLE.frag_class_allow"/>
</LinearLayout>
frag_class_options,frag_class_limit_options和frag_class_allow都遵循这样的:
public class frag_class_options extends Fragment{
RadioGroup radioGroup;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.options_m, container, false);
radioGroup = (RadioGroup) view.findViewById(R.id.rg_limit);
return view;
}
}