【问题标题】:Sectionpager title from string resources来自字符串资源的 Sectionpager 标题
【发布时间】:2014-06-11 15:54:31
【问题描述】:

我的应用中有一个sectionpager,我想从字符串资源中加载它的标题,以支持不同的语言标题。
那是我的sectionpager 班级:

public class SectionsPagerAdapter extends FragmentPagerAdapter {

public SectionsPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    switch (position) {
    case 0:
        Auftrag fragmenttab1 = new Auftrag();
        return fragmenttab1;
    case 1:
        Email fragmenttab2 = new Email();
        return fragmenttab2;
    case 2:
        Fragen fragmenttab3 = new Fragen();
        return fragmenttab3;
    case 3:
        Statistik fragmenttab4 = new Statistik();
        return fragmenttab4;
    }
    return null;
}
@Override
public int getCount() {
    return 4;
}
@Override
public CharSequence getPageTitle(int position) {

    switch (position) {
    case 0:
        return Resources.getSystem().getString(R.string.questions);
    case 1:
        return Resources.getSystem().getString(R.string.emails);
    case 2:
        return Resources.getSystem().getString(R.string.calls);
    case 3:
        return Resources.getSystem().getString(R.string.orders);
    }
    return null;
}
}

这是我得到的错误:

06-11 09:44:07.110: E/AndroidRuntime(18290): FATAL EXCEPTION: main
06-11 09:44:07.110: E/AndroidRuntime(18290):    
android.content.res.Resources$NotFoundException: String resource ID #0x7f040024
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.content.res.Resources.getText(Resources.java:1068)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.content.res.Resources.getString(Resources.java:1162)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at   
com.myappp.sectionapp.SectionsPagerAdapter.getPageTitle(SectionsPagerAdapter.java:41)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at   
android.support.v4.view.PagerTitleStrip.updateText(PagerTitleStrip.java:280)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at  
android.support.v4.view.PagerTitleStrip.updateAdapter(PagerTitleStrip.java:327)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.support.v4.view.PagerTitleStrip.onAttachedToWindow(PagerTitleStrip.java:256)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.View.dispatchAttachedToWindow(View.java:13029)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2683)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2690)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2690)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2690)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2690)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2690)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at  
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1457)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1249)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6364)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.Choreographer.doCallbacks(Choreographer.java:591)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.Choreographer.doFrame(Choreographer.java:561)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.os.Handler.handleCallback(Handler.java:730)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.os.Handler.dispatchMessage(Handler.java:92)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
android.os.Looper.loop(Looper.java:176)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at  
android.app.ActivityThread.main(ActivityThread.java:5419)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at   
java.lang.reflect.Method.invokeNative(Native Method)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
java.lang.reflect.Method.invoke(Method.java:525)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
06-11 09:44:07.110: E/AndroidRuntime(18290):    at  
dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

    标签: java android


    【解决方案1】:

    我觉得应该是这样的:

    getResources().getString(R.string.my_string);
    

    如需了解您收到错误的原因,请参阅this SO 帖子。

    【讨论】:

    • 它说:方法 getResources 未定义类型 Sectionpageradapter。
    • 然后使用 context.getResources() 你的上下文必须存在类似的东西
    • 你能给我一些关于如何正确定义上下文的提示吗?
    • 最好的方法可能是将上下文传递给构造函数本身 Context context;//这是类变量 public SectionsPagerAdapter(FragmentManager fm,Context context) { super(fm); this.context = 上下文}
    • 老兄,谢谢你,你拯救了我的一天。它解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 2013-04-15
    • 1970-01-01
    • 2016-12-17
    • 2013-07-02
    • 1970-01-01
    相关资源
    最近更新 更多