1

グーグル ネストされたフラグメントが 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_optionsfrag_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;
}     
}
4

3 に答える 3

3

フラグメントをネストするには、フラグメントの getChildFragmentManager メソッドを使用する必要があります。XML のフラグメントのデフォルトの XML 実装は、エラーにつながるアクティビティの getFragmentManager を使用します。childFragmentManager は Java コードを介してのみアクセスできるため、フラグメントのネストに XML を使用できないのはこのためです。

詳細については、http: //developer.android.com/about/versions/android-4.2.html#NestedFragmentsを参照してください。

于 2014-05-16T05:33:10.370 に答える
-1

私の質問: ネストされたフラグメントに XML を使用しないことについて読んだコメントは、どういう意味ですか?

答え: わかりません。あなたはこれらのコメントを見つけた場所を教えてくれませんでした。おそらく、コメントの作成者は、「ネストされたフラグメント」という用語の意味を定義していましたが、定義していなかった可能性があります。これは XML 用語の標準的な部分ではなく、あなたの質問からはそれが何を意味するのか推測できません。XML サンプルに「fragment」という要素がありますが、ネストされていません。

おそらく、質問は android に非常に固有のものであり、その場合、一般的な XML の質問としてタグ付けするべきではありません。

于 2013-07-19T08:31:31.150 に答える