Acceso a getString () en un fragmento que implementa un viewpager

Estoy usando un fragmento anidado usando SherlockFragment, todo funciona bien. Pero no estoy siendo capaz de hacer el título de viewpager a la cadena para que pueda soportar multilenguaje utilizando string.xml.

Aquí está mi código

public class schedule_pl extends SherlockFragment { private static String titles[] = new String[] { "Portugal", "Lisbon" , "Azores" }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.main_pager, container, false); // Locate the ViewPager in viewpager_main.xml ViewPager mViewPager = (ViewPager) view.findViewById(R.id.viewPager); // Set the ViewPagerAdapter into ViewPager mViewPager.setAdapter(new MyAdapter (getChildFragmentManager())); return view; } @Override public void onDetach() { super.onDetach(); try { Field childFragmentManager = Fragment.class .getDeclaredField("mChildFragmentManager"); childFragmentManager.setAccessible(true); childFragmentManager.set(this, null); } catch (NoSuchFieldException e) { throw new RuntimeException(e); } catch (IllegalAccessException e) { throw new RuntimeException(e); } } public static class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { switch(position) { case 0: return new place(); case 1: return new place2(); case 2: return new place3(); } return null; } @Override public CharSequence getPageTitle(int position) { return titles[position]; } @Override public int getCount() { // Show 3 total pages. return 3; } } public static class place extends Fragment { public place() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment1, container, false); return rootView; } } public static class place3 extends Fragment { public place3() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment2, container, false); return rootView; } } public static class place2 extends Fragment { public place2() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment3, container, false); return rootView; } } 

}

En getPageTitle no puedo que el trabajo con cadenas y ya probado varios métodos.

Acceso a getString () en android.support.v4.app.FragmentPagerAdapter? Esta es una pregunta similar en el sitio, pero ninguna respuesta me hizo en el camino correcto.

He intentado usar esto:

 @Override public CharSequence getPageTitle(int position) { Locale l = Locale.getDefault(); switch (position) { case 0: return getcontext.getString(R.string.title_section_schedule1).toUpperCase(l); case 1: return getcontext.getString(R.string.title_section_schedule2).toUpperCase(l); case 2: return getcontext.getString(R.string.title_section_schedule3).toUpperCase(l); } return null; } 

Pero no funcionan. Alguien sabe la solución a esto?

Puede pasar la Activity al constructor del adaptador.

 mViewPager.setAdapter(new MyAdapter (getChildFragmentManager(), getActivity())); 

Entonces en MyAdapter :

 //declare a private variable for the activity private Activity myActivity; public MyAdapter(FragmentManager fm, Activity myActivity) { super(fm); this.myActivity = myActivity; } 

Entonces en su getPageTitle

 ... return myActivity.getString(R.String.title_section_scheduale1).toUpperCase(l); ... 

Pruébelo, espero que funcione para usted.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.