【问题标题】:getResources() not working in FragmentPagerAdapter [duplicate]getResources() 在 FragmentPagerAdapter 中不起作用 [重复]
【发布时间】:2020-03-12 09:46:36
【问题描述】:

我尝试通过 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


    【解决方案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]);
        }
    }
    

    【讨论】:

    • 它几乎可以工作了。我不得不再更改一行代码,添加上下文参数 From: SimpleFragmentPagerAdapter adapter = new SimpleFragmentPagerAdapter(getSupportFragmentManager()); To: SimpleFragmentPagerAdapter 适配器 = new SimpleFragmentPagerAdapter(getSupportFragmentManager(), getApplicationContext());感谢您的帮助
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你只能在上下文中调用 getResorces() 方法,所以你应该使用 getActivity().getResorces()....

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-28
        • 2015-12-09
        • 2015-10-28
        • 1970-01-01
        • 1970-01-01
        • 2017-02-28
        • 2013-10-27
        相关资源
        最近更新 更多