2016-01-15 5 views
-3

Я хочу передать строчный вызов custID с одной фразы в anopther. но я не знаю, как это передать. Ниже приведен мой код:Как передать строку из одного фрагмента другому?

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 ""; 
    } 
} 

Может кто-нибудь помочь мне в этом?

+0

вы можете использовать setArgument() метод для передачи значений Фрагменты – playmaker420

+7

Посмотрите на ответ на ваш вопрос [здесь] (http://stackoverflow.com/questions/16036572/how-to-pass-values-between-fragments). –

+0

@CM Woo: Возможно, вы ищете передачу данных между фрагментами представления пейджера. проверьте эти ссылки http://android-er.blogspot.in/2012/06/communication-between-fragments-in.html и http://stackoverflow.com/questions/18492791/how-to-pass-a-string -between-фрагменты-в-ViewPager – kevz

ответ

0
Bundle bundle=new Bundle(); 
bundle.putString("ID", "value"); 
MyFragment obj=new MyFragment(); 
obj.setArguments(bundle); 
0

хорошо вы можете использовать пучок, как показано ниже -

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

getFragmentManager() 
.beginTransaction() 
.replace(R.id.body, fragment, null) 
.commit(); 

, а затем внутри onCreateView() вы можете получить, как показано ниже -

Bundle args = getArguments(); 
int myInt = bundle.getInt(key, defaultValue); 
0

пользователя Bundle передать любое значение от одного Fragment другому. Вот как вы можете передать строку из одного Fragment в другой.

Поместите значение

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"); 
0

Пока работает простой Bundle, как и другие ответы, я уже вижу, что вы используете 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"); 
0

SharedPreference - хороший способ передачи данных между действиями или фрагментом. Вы можете отправить любые данные INT, логическое, строка 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);