Android TabLayout 标题本地化不起作用

Zoo*_*key 1 android android-tablayout

我有带有 ViewPager 的 TabLayout 并且我只有两个选项卡:

  • 桌子

  • 地图

我在应用程序中支持多种语言,例如:

  • 英语,

  • 德语

  • 塞尔维亚

因此,我使用塞尔维亚语作为默认语言,因为大多数用户都是说塞尔维亚语的人,但是如果我更改为其他语言,除了表格和地图选项卡之外,所有内容都已正确本地化,因为它们总是使用塞尔维亚语。

可能是什么问题?

English:
    <string name="tab_map">MAP</string>
    <string name="username">Username</string>

German:
    <string name="tab_table">TABELLE</string>
    <string name="tab_map">MAPA</string>

Serbian:
    <string name="tab_table">TABELA</string>
    <string name="tab_map">MAPA</string>
Run Code Online (Sandbox Code Playgroud)

这是 TabLayout 的适配器:

public class MainViewPagerAdapter extends FragmentStatePagerAdapter {

private Context context;
private LiveFragment liveFragment;
private MapFragment mapFragment;

public MainViewPagerAdapter(FragmentManager fm, Context context, LiveFragment liveFragment, MapFragment mapFragment) {
    super(fm);
    this.context = context;
    this.liveFragment = liveFragment;
    this.mapFragment = mapFragment;
}

@Override
public Fragment getItem(int position) {
    switch (position){
        case 0: return liveFragment;
        case 1: return mapFragment;
    }
    return null;
}
@Override
public CharSequence getPageTitle(int position) {
    return getPagerTitles()[position];
}


@Override
public int getCount() {
    return getPagerTitles().length;
}

@NonNull
private CharSequence[] getPagerTitles() {
    return new CharSequence[]{context.getString(R.string.tab_table), context.getString(R.string.tab_map)};
}
Run Code Online (Sandbox Code Playgroud)

}

   <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/toolbar"
        app:tabMode="fixed"
        app:tabTextColor="@color/colorPrimary"
        app:tabTextAppearance="@style/TextAppearance.FontPath"
        android:background="@color/white"
        app:tabSelectedTextColor="@color/colorAccent"
        app:tabIndicatorHeight="3dp"
        android:elevation="0dp"
        app:tabGravity="fill"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:background="@color/white"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_below="@+id/tabs"></android.support.v4.view.ViewPager>
Run Code Online (Sandbox Code Playgroud)

Vad*_*ler 5

我也有同样的问题。2分钟前我能够修复它。当您创建 MainViewPagerAdapter 时,您是这样做的吗?

    MainViewPagerAdapter mvpa = 
new MainViewPagerAdapter(fm, getApplicationContext(), liveFragment, mapFragment);
Run Code Online (Sandbox Code Playgroud)

我认为应用程序上下文会查看您的默认语言(在我的情况下是电话语言)。只需尝试提供活动上下文,例如:new MainViewPagerAdapter(fm, this, ...

现在有人可以在评论中说“提供活动上下文的链接不好,最好使用应用程序上下文”,所以要小心:-)