0

我一直在尝试从 strings.xml 获取视图寻呼机上选项卡的部分标题,但到目前为止我无法让它工作。如果我将 MainActivity 类与我的 SectionPagerAdapter 结合起来,它工作得很好。但是我决定将它们分开,因为我发现有人阅读我的代码很整洁,尽管我找不到在 strings.xml 中检索字符串的解决方案

我在我的适配器类中初始化了一个 MainActivity

MainActivity main = new MainActivity();

我让他们通过我填充标题的这种方式找到strings.xml。

@Override
public CharSequence getPageTitle(int position) 
{
    Locale l = Locale.getDefault();
    switch (position)
    {
        case 0:
            return main.getString(R.string.title_section1);
        case 1:
            return main.getString(R.string.title_section2);
        case 2:
            return main.getString(R.string.title_section3);
        case 3:
            return main.getString(R.string.title_section4);
    }
    return "failed";
}

但是,只要它运行并且应用程序强制立即关闭,它就会给我 nullpointerexception。有没有办法将我的适配器类实际指向 strings.xml,因为适配器类没有在活动上扩展?

4

1 回答 1

0

您可以通过构造函数(或通过 setter)提供上下文。你的班级应该是这样的:

public class SectionPagerAdapter extends PagerAdapter{

    private Context context = null;

    public SectionPagerAdapter(Context context){
        this.context = context;
    }

    @Override
    public CharSequence getPageTitle(int position){
        Locale l = Locale.getDefault();
        switch (position)
        {
            case 0:
                return context.getString(R.string.title_section1);
            case 1:
                return context.getString(R.string.title_section2);
            case 2:
                return context.getString(R.string.title_section3);
            case 3:
                return context.getString(R.string.title_section4);
        }
        return "failed";
    }

    ...
}
于 2013-07-23T12:29:46.370 回答