You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何将switch语句内硬编码字符串改为字符串资源

替换FragmentPagerAdapter中硬编码标题为字符串资源

嘿,这事儿很容易解决,咱们分两步来操作就行:

第一步:在字符串资源文件中添加对应标题

首先打开res/values/strings.xml,把你需要的标题都添加进去:

<string name="tab_museums">Museums</string>
<string name="tab_culture">Culture</string>
<string name="tab_food">Food</string>
<string name="tab_views">Views</string>

第二步:修改getPageTitle方法

接下来回到你的FragmentPagerAdapter类,修改getPageTitle方法。这里要注意,你需要确保Adapter能访问到Context(可以通过Adapter的构造方法传入),然后用getString()来获取资源:

方式一:保留Switch语句

@Override
public CharSequence getPageTitle(int position) {
    switch (position) {
        case 0:
            return mContext.getString(R.string.tab_museums);
        case 1:
            return mContext.getString(R.string.tab_culture);
        case 2:
            return mContext.getString(R.string.tab_food);
        default:
            return mContext.getString(R.string.tab_views);
    }
}

注意:记得在Adapter的构造方法里传入Context并赋值给mContext变量哦

方式二:用字符串数组更简洁(推荐)

如果想让代码更清爽,还可以在strings.xml里定义一个字符串数组:

<string-array name="tab_titles">
    <item>@string/tab_museums</item>
    <item>@string/tab_culture</item>
    <item>@string/tab_food</item>
    <item>@string/tab_views</item>
</string-array>

然后修改getPageTitle方法,直接通过数组索引获取:

@Override
public CharSequence getPageTitle(int position) {
    String[] tabTitles = mContext.getResources().getStringArray(R.array.tab_titles);
    // 做个边界判断,避免数组越界
    if (position >= 0 && position < tabTitles.length) {
        return tabTitles[position];
    }
    return mContext.getString(R.string.tab_views);
}

这样就彻底把硬编码的字符串替换成可维护的字符串资源啦,后续要修改标题直接改strings.xml就行,还能方便做多语言适配~

内容的提问来源于stack exchange,提问作者Houxe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:08:49