39

アプリケーションでフラグメントを使用しています。これは、単純に xml ファイルを膨張させる私の最初のフラグメントです。

public class FragmentA extends SherlockFragment
{
    Context myContext,appContext;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    myContext = getActivity();
    appContext=getActivity().getApplicationContext();
    arguments = getArguments();
    doctor_id=arguments.getInt("doctor_id");
    userType=arguments.getString("userType");
    return inflater.inflate(R.layout.left_panel, container,false);
}

これは、フラグメントを含む left_panel .xml です。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <fragment
        android:id="@+id/titles"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        class="com.example.sample.ListFrag" />

</LinearLayout>

これは私の ListFrag クラスです:

public class ListFrag extends Fragment 
{
    Context myContext,appContext;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        layoutView = inflater.inflate(R.layout.activity_doctor_list,container);
        myContext = getActivity();
        appContext=getActivity().getApplicationContext();
        arguments=getArguments();
        int doctor_id=arguments.getInt("doctor_id");
}
}

Bundle argumentsFragmentA から ListFragに渡す方法がわかりません。

4

4 に答える 4

78

FragmentA フラグメントで、バンドルを引数として設定します。

Bundle args = new Bundle();
args.putInt("doctor_id",value);    
ListFrag newFragment = new ListFrag ();
newFragment.setArguments(args);

ListFrag フラグメントで、バンドルを次のように取得します

Bundle b = getArguments();
int s = b.getInt("doctor_id");
于 2013-06-12T10:49:04.667 に答える
1

次のような ListFrag で ListFrag の静的メソッドを作成します。

public static ListFrag newInstance(int doctorId) {
  ListFrag frag = new ListFrag();
  Bundle args = new Bundle();
  args.putExtra("doctor_id", doctorId);
  frag.setArguments(args);
  return frag;
}

フラグメント A から ListFrag を作成する場合は、次のように呼び出します。

Fragment frag = ListFrag.newInstance(this.doctor_id);
// use frag with getSupportChildFragmentManager();
于 2013-06-12T10:45:17.683 に答える