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
相关产品推荐
相关产品推荐

