2013-07-23 34 views
0

我一直在試圖從我的視圖pager從strings.xml中我的選項卡部分標題,但到現在我無法讓它工作。如果我將MainActivity類與SectionPagerAdapter結合起來,它工作正常。但是我決定,因爲我覺得它整齊的人看我的代碼,雖然我不能找到一個解決方案來檢索的strings.xml琴絃Android - 在strings.xml中填充actiontab部分

我有我的適配器類初始化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,因爲適配器類不在活動上進行擴展?

+0

永遠不要創建一個像這樣的新活動。如果你只需要'getString'的活動,那麼就使用'Context'。 – Brtle

+0

你能舉一個例子代碼嗎?我確實試了一下,但它似乎不起作用 – thhVictor

回答

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"; 
    } 

    ... 
} 
+0

是的,它的工作原理。謝謝你節省我一些時間哈哈! – thhVictor