所以我嘗試了各種解決方案來解決這個問題。這裏是我開始的一個例子:需要將字符串資源轉換爲viewpager中的字符串
class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
SimpleFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
private String tabTitles[] = new String[] {"one","two","three","four"};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
然後我嘗試以下,以獲得從string.xml相同字符串:
class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
SimpleFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
private String tabTitles[] = new String[] {Resources.getSystem().getString(R.string.one),
Resources.getSystem().getString(R.string.two),
Resources.getSystem().getString(R.string.three),
Resources.getSystem().getString(R.string.four)};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
但我收到此錯誤: 致命異常:主要 進程:com.example.android.myapp,PID:9923 java.lang.RuntimeException:無法啓動活動ComponentInfo {com.example.android.myapp/com.example.android.myapp.MainActivity}:android.content .res.Resources $ NotFoundException:String res烏爾斯河ID#0x7f070017
因爲我知道琴絃存在,我在我的代碼,我認爲這可能需要上下文其他地區使用過,所以我通過適配器通過MainActivity.this和嘗試:
class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
private Context mContext;
SimpleFragmentPagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.mContext = context;
}
private String tabTitles[] = new String[] {mContext.getResources().getString(R.string.one),
mContext.getResources().getString(R.string.two),
mContext.getResources().getString(R.string.three),
mContext.getResources().getString(R.string.four)};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
而接收此錯誤: 致命異常:主 工藝:com.example.android.myapp,PID:5387 了java.lang.RuntimeException:無法啓動活動ComponentInfo {com.example.android.myapp /com.example.android.myapp.MainActivity}:java.lang.NullPointerException:嘗試t ø調用虛擬方法android.content.res.Resources android.content.Context.getResources()'上的空對象引用
最後,我試圖的資源轉換爲字符串在MainActivity內,並通過將它們傳遞到適配器:
class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
private String mOne;
private String mTwo;
private String mThree;
private String mFour;
SimpleFragmentPagerAdapter(FragmentManager fm, one, two, three, four) {
super(fm);
mOne = one;
mTwo = two;
mThree = three;
mFour = four;
}
private String tabTitles[] = new String[] {mOne,mTwo,mThree,mFour};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
它運行沒有錯誤,但只是導致空白標籤標題。
也許我只是在這裏做一個完整的菜鳥,想念一些簡單的東西,但我會很感激你們可以提供的任何幫助。
你可以顯示你在哪裏實例化你的適配器並將其設置爲你的Tablayout – buradd
我的回答對你有幫助嗎?如果是,請將其標記爲已接受的答案。 – MatusMak