Android 如何将捆绑包从一个片段传递到另一个片段

Android 如何将捆绑包从一个片段传递到另一个片段,android,android-fragments,Android,Android Fragments,我正在应用程序中使用片段。这是我的第一个简单膨胀xml文件的片段: public class FragmentA extends SherlockFragment { Context myContext,appContext; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Au

我正在应用程序中使用片段。这是我的第一个简单膨胀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);
}
这是左_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>

我不知道如何将
捆绑参数
从FragmentA传递到ListFrag。

在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();

在片段中,片段将bundle设置为参数

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");
你有两个选择:

A.如果您有您的列表片段的参考 您可以通过以下操作为FragmentA设置目标片段:

  • 片段a
    中,此.setTargetFragment(yourListFragment)
  • 然后
    this.getTargetFragment().setArguments(yourBundle)
  • ListFragment中,使用
    this.getArguments()返回它
  • B.最符合逻辑的方式

    我打赌你的碎片在同一个活动中,所以她有他们的参考资料。 您可以从FragmentA向活动传递数据,并将其传递到listframenta


    FragmentA--数据-->FragmentActivity--数据-->ListFragment片段到片段集和获取参数:

    启动活动:

         int friendId = 2; //value to pass as extra 
         i = new Intent(firstActivity, SecondActivity.class);
         i.putExtra("friendsID", friendId);
         firstActivity.startActivity(i);
    
    第二项活动:

         Fragment_A mFragment_A = new Fragment_A();
         mFragment_A.setArguments(getIntent().getExtras());
    
    片段A:

        Bundle bundle = new Bundle();
        String Item = getArguments().getString("friendsID");
        bundle.putInt("friendsID", Integer.parseInt(Item));
    
        // code
    
        Fragment_B mFragment_B = new Fragment_B();
        mFragment_B.setArguments(bundle);
    
    片段B:

        Bundle bundle = getArguments();
        int value = bundle.getInt("friendsID");
    
        Log.e("value Fragment get Argument ", "friendsID :" + value);
    

    这对我来说很有用,试试看,这可能对你有所帮助。

    但我只是在xml文件中加载了左\u panel.xml文件,我给出了片段名称。。。这就是我调用另一个片段的方法。。。这里你的答案是合适的??查看
    onInflate()
    。创建自己的属性,并将其复制到arguments.bundle中。有一个选项可以通过onInflate函数为xml膨胀片段设置参数。我在上面的注释中给出了函数示例的链接。@Tarun onInflate从XML布局中获取参数,而不是从活动或膨胀布局的片段中获取参数,我相信Vikky是在问这个问题。这段代码是错误的<代码>字符串s=b.getInt(“医生id”)需要更改为
    ints=b.getInt(“医生id”)小错误+1虽然我不是从FragmentA创建ListFragm。。我在xml文件中使用片段,然后从片段A中放大该xml文件。然后,下面的blackbelt为您提供了解决方案和完整的片段,您可以如何做到这一点?@delive我没有理解您?你能把你的问题说清楚吗?@delivefragmenta-----“pass”--函数名(数据)--->FragmentActivity-----“get”--函数名(字符串数据)--->这是一个循环公共void getFragment(fragmentfrag){},我现在有了:Class fragmentClass=fragmentCurrent;Fr f=(Fr)fragmentClass.newInstance(),但始终获取一个新实例。。。
    
        Bundle bundle = getArguments();
        int value = bundle.getInt("friendsID");
    
        Log.e("value Fragment get Argument ", "friendsID :" + value);