yiranwujixian 2012-12-29 07:19 采纳率: 100%
浏览 4179
已采纳

android面向对象中不能重用方法

在我的应用中我不能重用我已经在ArabicUtility类中声明的方法。我想要做的是用Arabicutility来安排一个阿拉伯语的文本。因此,我需要做的是给已经在Arabicutility类中声明的方法传递字符串并进行转换
我想这个在面向对象中是有一些困难的,所以希望能有人帮我改一下。
这个是我在Arabicutility类中加的方法

public void addTranslate(int rid, TextView txt1) {
        String textv = getResources().getString(rid);
        txt1.setText(ArabicUtilities.reshapeSentence(textv));
    //  Typeface typeFace=Typeface.createFromAsset(getAssets(),"fonts/DroidNaskhBold.ttf");
    //  txt1.setTypeface(typeFace);

    }

因为getResources()是非静态的,所以我不能将这个方法声明成静态的。因为我用的是android方法,所以我不得不从Activity中扩展。原始的它不是这么定义的。
这个就是我在其他activity类中用的上边的方法

arbic.addTranslate(R.string.butt18title1, txt1);
arbic.addTranslate(R.string.butt18desc1, txt2);but When I run the programe it crashes when I go to above activities.

这个是 log cat

12-29 10:02:32.561: E/AndroidRuntime(951): FATAL EXCEPTION: main
12-29 10:02:32.561: E/AndroidRuntime(951): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxx.xxx/com.xxxx.xxx.ShowMessageActivity}: java.lang.NullPointerException
12-29 10:02:32.561: E/AndroidRuntime(951):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
12-29 10:02:32.561: E/AndroidRuntime(951):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
12-29 10:02:32.561: E/AndroidRuntime(951):  at android.app.ActivityThread.access$600(ActivityThread.java:130)
12-29 10:02:32.561: E/AndroidRuntime(951):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
12-29 10:02:32.561: E/AndroidRuntime(951):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-29 10:02:32.561: E/AndroidRuntime(951):  at android.os.Looper.loop(Looper.java:137)
12-29 10:02:32.561: E/AndroidRuntime(951):  at android.app.ActivityThread.main(ActivityThread.java:4745)
12-29 10:02:32.561: E/AndroidRuntime(951):  at java.lang.reflect.Method.invokeNative(Native Method)
12-29 10:02:32.561: E/AndroidRuntime(951):  at java.lang.reflect.Method.invoke(Method.java:511)
12-29 10:02:32.561: E/AndroidRuntime(951):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-29 10:02:32.561: E/AndroidRuntime(951):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-29 10:02:32.561: E/AndroidRuntime(951):  at dalvik.system.NativeStart.main(Native Method)
12-29 10:02:32.561: E/AndroidRuntime(951): Caused by: java.lang.NullPointerException
12-29 10:02:32.561: E/AndroidRuntime(951):  at android.content.ContextWrapper.getResources(ContextWrapper.java:81)
12-29 10:02:32.561: E/AndroidRuntime(951):  at com.xxxx.xxx.ArabicUtilities.addTranslate(ArabicUtilities.java:252)
12-29 10:02:32.561: E/AndroidRuntime(951):  at com.xxxx.xxx.ShowMessageActivity.onCreate(ShowMessageActivity.java:184)
12-29 10:02:32.561: E/AndroidRuntime(951):  at android.app.Activity.performCreate(Activity.java:5008)
12-29 10:02:32.561: E/AndroidRuntime(951):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
12-29 10:02:32.561: E/AndroidRuntime(951):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
12-29 10:02:32.561: E/AndroidRuntime(951):  ... 11 more
  • 写回答

2条回答 默认 最新

  • Sueyexin 2012-12-29 08:15
    关注

    不需要声明为静态addTranslate获得资源在非活动类你只需要通过当前活动上下文通过使用非活动类构造函数或通过在方法为:
    在non activity类中不需要声明addTranslate为静态来获得Resources,你只需要用non activity类构造函数来传递 Current Activity Context,或者是在方法中传递:

    public void addTranslate(int rid, TextView txt1,Context context) {
            String textv = context.getResources().getString(rid);
            txt1.setText(ArabicUtilities.reshapeSentence(textv));
    
        }
    

    现在你从activity类中调用addTranslate:

    arbic.addTranslate(R.string.butt18title1, txt1,Your_Current_Activity.this);
    arbic.addTranslate(R.string.butt18desc1, txt2,Your_Current_Activity.this);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器