2012-12-18 33 views
0

在我的android應用程序中,我使用阿拉伯語,因此在每個Activity類中我使用了一個方法addtranslate,並在需要翻譯活動中的文本時調用它。大約有15個活動類,我必須寫這個方法並且調用它。它工作得很好,但不是很好的做法,實現方法每個類我創建一個新的類,並在Activity類中實例化它,並嘗試使用它來處理來自android項目中的一個位置的翻譯。無法啓動組件信息android

但是,當我嘗試這個時,出現以下錯誤。 這裏是日誌貓

12-18 10:12:26.690: E/AndroidRuntime(341): FATAL EXCEPTION: main 
12-18 10:12:26.690: E/AndroidRuntime(341): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxx.xxx/com.xxxx.xxx.ShowMessageActivity}: java.lang.NullPointerException 
12-18 10:12:26.690: E/AndroidRuntime(341): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
12-18 10:12:26.690: E/AndroidRuntime(341): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
12-18 10:12:26.690: E/AndroidRuntime(341): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
12-18 10:12:26.690: E/AndroidRuntime(341): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
12-18 10:12:26.690: E/AndroidRuntime(341): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-18 10:12:26.690: E/AndroidRuntime(341): at android.os.Looper.loop(Looper.java:123) 
12-18 10:12:26.690: E/AndroidRuntime(341): at android.app.ActivityThread.main(ActivityThread.java:3683) 
12-18 10:12:26.690: E/AndroidRuntime(341): at java.lang.reflect.Method.invokeNative(Native Method) 
12-18 10:12:26.690: E/AndroidRuntime(341): at java.lang.reflect.Method.invoke(Method.java:507) 
12-18 10:12:26.690: E/AndroidRuntime(341): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
12-18 10:12:26.690: E/AndroidRuntime(341): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
12-18 10:12:26.690: E/AndroidRuntime(341): at dalvik.system.NativeStart.main(Native Method) 
12-18 10:12:26.690: E/AndroidRuntime(341): Caused by: java.lang.NullPointerException 
12-18 10:12:26.690: E/AndroidRuntime(341): at android.content.ContextWrapper.getResources(ContextWrapper.java:80) 
12-18 10:12:26.690: E/AndroidRuntime(341): at com.xxxx.xxx.AddTranslate.addTranslates(AddTranslate.java:11) 
12-18 10:12:26.690: E/AndroidRuntime(341): at com.xxxx.xxx.ShowMessageActivity.onCreate(ShowMessageActivity.java:41) 
12-18 10:12:26.690: E/AndroidRuntime(341): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
12-18 10:12:26.690: E/AndroidRuntime(341): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
12-18 10:12:26.690: E/AndroidRuntime(341): ... 11 more 

這裏是翻譯新創建的java類

import android.app.Activity; 
import android.graphics.Typeface; 
import android.widget.TextView; 

public class AddTranslate extends Activity { 


    public void addTranslates(int rid, TextView txt1) { 
     String textv = getResources().getString(rid); 
     txt1.setText(Farsi.Convert(textv)); 
     Typeface typeFace=Typeface.createFromAsset(getAssets(),"fonts/DroidSansArabic.ttf"); 
     txt1.setTypeface(typeFace); 

    } 

} 

這是我如何使用它的其他活動

protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.page17sub); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     final TextView txt1 = (TextView) findViewById(R.id.textView1); 
     final TextView txt2 = (TextView) findViewById(R.id.textView2); 


     Intent intent = getIntent(); 
     id = intent.getIntExtra("id", 0); 
     AddTranslate tra1 =new AddTranslate(); 
     AddTranslate tra2 =new AddTranslate(); 

      if (id == 3) { 

      //addTranslate(R.string.butt3title1, txt1); 
      //addTranslate(R.string.butt3desc1, txt2); 
      tra1.addTranslates(R.string.butt3title1, txt1); 
      tra2.addTranslates(R.string.butt3desc1, txt2); 

     } else if (id == 5) { 

任何人可以幫助我糾正這一點。

這是通過currnt活動addtranslation對象

12-18 11:40:46.639: E/AndroidRuntime(481): FATAL EXCEPTION: main 
12-18 11:40:46.639: E/AndroidRuntime(481): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxx.xxx/com.xxxx.xxx.ShowMessageActivity}: java.lang.NullPointerException 
12-18 11:40:46.639: E/AndroidRuntime(481): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
12-18 11:40:46.639: E/AndroidRuntime(481): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
12-18 11:40:46.639: E/AndroidRuntime(481): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
12-18 11:40:46.639: E/AndroidRuntime(481): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
12-18 11:40:46.639: E/AndroidRuntime(481): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-18 11:40:46.639: E/AndroidRuntime(481): at android.os.Looper.loop(Looper.java:123) 
12-18 11:40:46.639: E/AndroidRuntime(481): at android.app.ActivityThread.main(ActivityThread.java:3683) 
12-18 11:40:46.639: E/AndroidRuntime(481): at java.lang.reflect.Method.invokeNative(Native Method) 
12-18 11:40:46.639: E/AndroidRuntime(481): at java.lang.reflect.Method.invoke(Method.java:507) 
12-18 11:40:46.639: E/AndroidRuntime(481): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
12-18 11:40:46.639: E/AndroidRuntime(481): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
12-18 11:40:46.639: E/AndroidRuntime(481): at dalvik.system.NativeStart.main(Native Method) 
12-18 11:40:46.639: E/AndroidRuntime(481): Caused by: java.lang.NullPointerException 
12-18 11:40:46.639: E/AndroidRuntime(481): at android.content.ContextWrapper.getResources(ContextWrapper.java:80) 
12-18 11:40:46.639: E/AndroidRuntime(481): at com.xxxx.xxx.AddTranslate.addTranslates(AddTranslate.java:19) 
12-18 11:40:46.639: E/AndroidRuntime(481): at com.xxxx.xxx.ShowMessageActivity.onCreate(ShowMessageActivity.java:43) 
12-18 11:40:46.639: E/AndroidRuntime(481): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
12-18 11:40:46.639: E/AndroidRuntime(481): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
12-18 11:40:46.639: E/AndroidRuntime(481): ... 11 more 
+0

我s直到有問題。我可以理解爲什麼我不能創建一個類並在其他類中使用它的對象... – kiriappa

回答

0

你需要AddTranslate的喲使用構造函數來發送當前上下文中AddTranslate ShowMessageActivity活動更改您的代碼後,最新的日誌爲:

public class AddTranslate { 
public Context context; 

public AddTranslate(Context context){ 
this.context=context; 
} 

    public void addTranslates(int rid, TextView txt1) { 
     String textv = context.getResources().getString(rid); 


     txt1.setText(Farsi.Convert(textv)); 
     Typeface typeFace=Typeface.createFromAsset(context.getAssets(), 
              "fonts/DroidSansArabic.ttf"); 
     txt1.setTypeface(typeFace); 

    } 

} 

和來自ShowMessageActivity活動:

AddTranslate tra1 =new AddTranslate(Current_Activity.this); 
    AddTranslate tra2 =new AddTranslate(Current_Activity.this); 
+0

Current_Activity無法解析爲類型錯誤已得到。 – kiriappa

+0

@kiriappa:哦!朋友Current_Activity意味着你當前的活動名稱 –

+0

我嘗試過使用AddTranslate tra1 = new AddTranslate(ShowMessageActivity.this); \t但是當我開始使用這個acitivuty時,仍然會導致應用程序崩潰。 – kiriappa

相關問題