Android 如何将捆绑包从一个片段传递到另一个片段
我正在应用程序中使用片段。这是我的第一个简单膨胀xml文件的片段: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
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设置目标片段:
中,此.setTargetFragment(yourListFragment)代码>
this.getTargetFragment().setArguments(yourBundle)代码>
this.getArguments()返回它代码>
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);