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()....
我尝试用 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()....