¿Cómo obtener un recurso de cadena en el adaptador ViewPager?
Estoy intentando fijar el título para mi viewpager, no puedo parecer conseguirlo para trabajar. Traté de Resources.getSystem (). GetString (R.string.title1); Y también trató de pasar un contexto. ¿Podría alguien ayudarme?
public class ViewPagerAdapter extends FragmentPagerAdapter { final int PAGE_COUNT = 3; Context context; public ViewPagerAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return PAGE_COUNT; } @Override public Fragment getItem(int position) { return PageFragment.create(position + 1); } @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return Resources.getSystem().getString(R.string.title1); case 1: return Resources.getSystem().getString(R.string.title1); case 2: return Resources.getSystem().getString(R.string.title1); } return null; } }
Logcat:
- Mostrar fragmento viewpager dentro de un fragmento
- La imagen no se muestra en ImageViewZoom
- Ver indicador de buscapersonas Jake Wharton
- ¿Cuál es el papel de "isViewFromObject (View view, Object object)" en FragmentStatePagerAdapter?
- ¿Cómo restablecer contenido de viewpager en Android?
09-02 17:40:33.160: E/AndroidRuntime(3116): FATAL EXCEPTION: main 09-02 17:40:33.160: E/AndroidRuntime(3116): android.content.res.Resources$NotFoundException: String resource ID #0x7f050003 09-02 17:40:33.160: E/AndroidRuntime(3116): at android.content.res.Resources.getText(Resources.java:230) 09-02 17:40:33.160: E/AndroidRuntime(3116): at android.content.res.Resources.getString(Resources.java:314)
- Resaltar o subrayar seleccionado TabPageIndicator
- ¿Cómo eliminar las pestañas de Android ViewPager divider?
- Android ViewPager: descargar las imágenes de la URL
- Cómo personalizar PagerTabStrip
- Los fragmentos no se liberan de la memoria
- Aplicar fuerza cerrar en viewPager.setAdapter (adaptador)
- Evitar que ViewPager destruya vistas fuera de pantalla
- Salta dinámicamente páginas en ViewPager
Bueno, de acuerdo con su mensaje de error no tiene una cadena con el ID que está solicitando.
¿Podría ser que usted está apoyando multi idiomas y sólo tiene este tipo de String-ID para un idioma específico?
De todos modos, esta línea de código:
String yourstring = getResources().getString(R.string.yourstring);
Es cómo obtener una cadena de recursos.
Debe llamar a getString desde el contexto de una actividad, cambiar su código a
public class ViewPagerAdapter extends FragmentPagerAdapter { final int PAGE_COUNT = 3; Context context; public ViewPagerAdapter(FragmentManager fm, Context nContext) { super(fm); context = nContext; } @Override public int getCount() { return PAGE_COUNT; } @Override public Fragment getItem(int position) { return PageFragment.create(position + 1); } @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return context.getString(R.string.title1); case 1: return context.getString(R.string.title1); case 2: return context.getString(R.string.title1); } return null; } }
Si está intentando acceder a los recursos de cadena desde fuera de una actividad, debe pasar el contexto a esa clase (que ya ha declarado que ya ha hecho) y, a continuación,
String str = context.getResources().getString(R.string.some_string);
También compruebe su archivo strings.xml
para asegurarse de que está utilizando correctamente el ID de cadena. Si estás usando android studio deberías ser capaz de simplemente empezar a escribir R.string.
Y luego mostrará las sugerencias del archivo strings.xml. Si no ve su recurso aquí, puede indicar un problema con la forma en que está almacenando sus recursos, en contraposición a cómo está intentando acceder a ellos.
Estás intentando buscar String
dentro de tus Resources
sin obtener Resources
. Así que trate de extraer sus Resources
con getResources()
con su Context
.
Si estás dentro de Activity
o Service
entonces el contexto está ahí. Si fuera, entonces intenta tirar Context
primero con getApplicationContext()
y en ese tirar de los recursos y tirar de su String
al final en ella.
Según su código, este fragmento no lanzaría ninguna excepción si los resources
y los id de String
mencionados se extraen correctamente.
public CharSequence getPageTitle(int position) { switch (position) { case 0: return getResources().getString(R.string.title1); case 1: return getResources().getString(R.string.title1); case 2: return getResources().getString(R.string.title1); } return null; }
Pruebe getApplicationContext (). GetResources () .getString (R.String.title1);
En mi experiencia, el paginador de vista no mostrará cada texto a la pantalla asignada consistentemente. Necesitaba crear un diseño independiente para cada página y asignar el texto desde dentro del diseño, por lo que al voltear las páginas de cada página se mostrará un diseño con su texto.
Sólo tienes que usar el método getContext (). GetString (resId) como getContext (). GetString (R.string.title1). Funcionó para mí.
- Cómo cambiar la altura y el ancho de Switch en Android
- Generación aleatoria flotante entre negativo y positivo opengl es java