getResources() 在 FragmentPagerAdapter 中不起作用

getResources() not working in FragmentPagerAdapter

我尝试用 string.xml 中的字符串填充 FragmentPagerAdapter 中的选项卡标题。我根据 StackOverlow 或其他来源检查了几种不同的方法来做到这一点。下面我展示了我最新版本的代码。我仍然收到“无法解析方法 'getResources()'”的消息。是否可以将选项卡名称与 string.xml 相关联?

import android.content.Context;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

public class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {

final int PAGE_COUNT=5;
private int[] tabTitles = new int[] {R.string.head_character, R.string.head_training, R.string.head_evolutions, R.string.head_talismans, R.string.head_enchantments};

public SimpleFragmentPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    if (position == 0) {
        return new TrainingFragment();
    } else {
        return new EvoFragment();
    }
}

@Override
public int getCount() {
    return PAGE_COUNT;
}

@Override
public CharSequence getPageTitle(int position) {
    // Generate title based on item position
    return getResources().getString(tabTitles[position]);
}
}

尝试将 context 设置为 Class contractor 中的参数并在 getPageTitle() 方法中使用它;

public class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
    private Context context;
    final int PAGE_COUNT=5;
    private int[] tabTitles = new int[] {R.string.head_character, R.string.head_training, R.string.head_evolutions, R.string.head_talismans, R.string.head_enchantments};

     public SimpleFragmentPagerAdapter(FragmentManager fm , Context context) {
            super(fm);
            this.context = context;
        }

    @Override
    public Fragment getItem(int position) {
        if (position == 0) {
            return new TrainingFragment();
        } else {
            return new EvoFragment();
        }
    }

    @Override
    public int getCount() {
        return PAGE_COUNT;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        // Generate title based on item position
        return context.getResources().getString(tabTitles[position]);
    }
}

调用 getResources() 方法使用 getActivity().getApplicationContext() 作为 return getActivity().getApplicationContext().getResources().getString(tabTitles[position]);

您只能在上下文中调用 getResorces() 方法,因此您应该使用 getActivity().getResorces()....