# #java #android #firebase #android-fragments
Вопрос:
Я пытаюсь поместить текстовый перевод в адаптерпагера фрагментов Со всеми попытками и использовать return (R. строка.Чаты) «»;
Странное число появилось передо мной в трех вкладках ,
фото : https://i.stack.imgur.com/znIB2.png
public class SectionPagerAdapter extends FragmentPagerAdapter {
private Context context;
public SectionPagerAdapter(@NonNull FragmentManager fm) {
super(fm);
}
@NonNull
@Override
public Fragment getItem(int position) {
if(position==0){
ChatsFragment chatsFragment =new ChatsFragment();
return chatsFragment;
}
else if(position==1){
FriendsFragment firendsFragment =new FriendsFragment();
return firendsFragment;
}
else if(position==2){
RequestsFragment requestsFragment =new RequestsFragment();
return requestsFragment;
}
else return null;
}
@Override
public int getCount() {
return 3;
}
public CharSequence getPageTitle(int position){
if(position==0){
return (R.string.Chats) "";
}
else if(position==1){
return (R.string.Friends) "";
}
else if(position==2){
return (R.string.Requests) "";
}
else return null;
}
}
Проблема, в частности, здесь заключается в том, что я хочу, короче говоря, добавить текст через строку R. !
public CharSequence getPageTitle(int position){
if(position==0){
return (R.string.Chats) "";
}
else if(position==1){
return (R.string.Friends) "";
}
else if(position==2){
return (R.string.Requests) "";
}
else return null;
}
Комментарии:
1. Пожалуйста, прочитайте документы . Вам нужно извлечь строковое значение. Прямо сейчас вы просто печатаете идентификатор ресурса
Ответ №1:
R. строка.что-то возвращает идентификатор строкового ресурса, который есть у строки. Вы можете передать контекст конструктору представления и инициализировать контекст свойств, который у вас есть в классе адаптера.
Тогда вы можете получить строки, подобные этой:
context.getString(R.string.something)
Комментарии:
1. Спасибо @Emanuel за ответ При использовании return context.getString(R. строка. Чаты); Я получаю сообщение об ошибке Не удается разрешить символ «контекст» Я использую контекст частного контекста; Когда вы запускаете приложение, оно внезапно закрывается, почему ?
2. Потому что вы не инициализируете контекст. Поскольку я запрашиваю контекст в качестве параметра в вашем классе адаптера, например: ` public SectionPagerAdapter(@NonNull FragmentManager fm, контекстный контекст) { супер(fm); this.контекст = контекст;}`, А затем вы можете использовать контекст в своем адаптере без ошибок.
3. @Roanda При создании адаптера вы отправляете FragmentManager и контекстное меню, используя ключевое слово » это `
Ответ №2:
R.string.Chats
— это не идентификатор String
ресурса(имеет целочисленный тип). Если вы хотите получить строку из ресурсов, вы должны использовать: context.getString(R.string.Chats)
вместо R.string.Chats
. То же самое касается заголовков других страниц. просто перепишите getPageTitle
свой метод, и все будет в порядке
Комментарии:
1. Большое спасибо @Anatolii Chub за помощь и разъяснение проблемы При использовании return context.getString(R. строка. Чаты); Я получаю сообщение об ошибке Не удается разрешить символ «контекст» Я использую контекст частного контекста; Когда вы запускаете приложение, оно внезапно закрывается