getResources()在FragmentPagerAdapter中不起作用

问题描述 投票:0回答:3

我尝试通过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]);
}
}
android fragmentpageradapter getresource
3个回答
1
投票

尝试在类context中将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]);
    }
}

0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.