Странное число появляется у меня в FragmentPagerAdapter, когда я вызываю строку перевода R.

# #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. строка. Чаты); Я получаю сообщение об ошибке Не удается разрешить символ «контекст» Я использую контекст частного контекста; Когда вы запускаете приложение, оно внезапно закрывается