Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将字符串从一个片段传递到另一个片段?_Java_Android_Android Fragments_Tabs - Fatal编程技术网

Java 如何将字符串从一个片段传递到另一个片段?

Java 如何将字符串从一个片段传递到另一个片段?,java,android,android-fragments,tabs,Java,Android,Android Fragments,Tabs,我想将字符串调用custID从一个片段传递到另一个片段。但我不知道如何通过考试。下面是我的代码: class TabsAdapter extends FragmentPagerAdapter { public TabsAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return 2; } @Override

我想将字符串调用custID从一个片段传递到另一个片段。但我不知道如何通过考试。下面是我的代码:

class TabsAdapter extends FragmentPagerAdapter {
    public TabsAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return 2;
    }

    @Override
    public Fragment getItem(int i) {
        switch(i) {
            case 0: return MaterialUpConceptFakePage.newInstance();
            case 1: return MaterialUpConceptFakePage.newInstance();
        }
        return null;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch(position) {
            case 0: return "Tab 1";
            case 1: return "Tab 2";
        }
        return "";
    }
}

有人能帮我吗?

好的,您可以使用如下捆绑包-

Bundle bundle=new Bundle();
bundle.putString("ID", "value");
MyFragment obj=new MyFragment ();
obj.setArguments(bundle);
Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putInt(key, value);
fragment.setArguments(bundle);

getFragmentManager()
.beginTransaction()
.replace(R.id.body, fragment, null)
.commit();
Bundle args = getArguments();
int myInt = bundle.getInt(key, defaultValue);
然后在onCreateView()中,您可以收到如下消息-

Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putInt(key, value);
fragment.setArguments(bundle);

getFragmentManager()
.beginTransaction()
.replace(R.id.body, fragment, null)
.commit();
Bundle args = getArguments();
int myInt = bundle.getInt(key, defaultValue);

用户
Bundle
将任何值从一个
片段传递到另一个
片段。这就是如何将字符串从一个
片段传递到另一个

输入值

SecondFragment secondFragment = new SecondFragment ();
Bundle args = new Bundle();
args.putString("MyKey", "MyValue");
secondFragment.setArguments(args);
加载第二个片段

getFragmentManager().beginTransaction().add(R.id.container, secondFragment).commit();
在第二个片段的onCreateView中:

//Retrieve the value
String value = getArguments().getString("MyKey");

虽然像其他答案一样,一个简单的捆绑包可以工作,但我已经看到您使用了newInstance,因此我将向您展示一个示例,同时仍然使用newInstance使代码在将来更易于维护

在您希望字符串所在的片段中添加以下代码

 public static YourFragmentName newInstance(String str) {
        YourFragmentName fragment = new YourFragmentName ();
        Bundle args = new Bundle();
        args.putSerializable("customer_id", str);
        fragment.setArguments(args);
        return fragment;
    }
然后查看您的代码,而不是

MaterialUpConceptFakePage.newInstance()
你应该

MaterialUpConceptFakePage.newInstance(customerid)
然后在onCreateView中

String customer_id = (String) getArguments().get("customer_id");

SharedReference是在活动或片段之间传递数据的好方法。您可以发送任何数据int、boolean、string int等

SharedPreferences preference;
  //Initialize preference

preference = getActivity().getSharedPreferences("STATE",MODE_PRIVATE);
  // it uses key-value pairs
 // put string data to preference
    preference.edit().putString("Your_String_Data", "anything").commit();

//use this to get that value in any fragment.
 preference = getActivity().getSharedPreferences("STATE",
            Context.MODE_PRIVATE);

  String data  = preference.getString("Your_String_Data",null);

您可以使用setArgument()方法将值传递给FragmentsLook,查看问题的详细答案。@CM-Woo:您可能在查看寻呼机的片段之间传递数据。检查此链接和