2016-01-02 45 views
-3

使用getRessources()從string.xml中獲取值時發生錯誤。getResources()返回錯誤

這裏我的文件:

String[] mail_array_spinner = new String[]{getResources().getString(R.string.type_select),getResources().getString(R.string.maillist)}; 

這裏日誌:

01-02 16:59:39.255 6087-6087/com.example.xx.cxeapp D/typei: mail 
01-02 16:59:39.257 6087-6087/com.example.xx.cxeapp D/AndroidRuntime: Shutting down VM 
01-02 16:59:39.258 6087-6087/com.example.xx.cxeapp E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.example.xx.cxeapp, PID: 6087 
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference 
     at android.content.ContextWrapper.getResources(ContextWrapper.java:87) 
     at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:81) 
     at com.example.mouh.myapplication.mail.<init>(mail.java:11) 
     at Adapters.InProgressListAdapter.getView(InProgressListAdapter.java:62) 
     at android.widget.AbsListView.obtainView(AbsListView.java:2346) 
     at android.widget.ListView.measureHeightOfChildren(ListView.java:1280) 
     at android.widget.ListView.onMeasure(ListView.java:1188) 
     at android.view.View.measure(View.java:18788) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
     at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:610) 
     at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:677) 
     at android.view.View.measure(View.java:18788) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
     at android.view.View.measure(View.java:18788) 
     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1489) 
     at android.view.View.measure(View.java:18788) 
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:901) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
     at android.view.View.measure(View.java:18788) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
     at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1112) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:632) 
     at android.view.View.measure(View.java:18788) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
     at android.view.View.measure(View.java:18788) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
     at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) 
     at android.view.View.measure(View.java:18788) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
     at android.view.View.measure(View.java:18788) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
     at android.view.View.measure(View.java:18788) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
     at android.view.View.measure(View.java:18788) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
     at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643) 
     at android.view.View.measure(View.java:18788) 
     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100) 
     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216) 
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452) 

任何幫助解決

import android.app.Activity; 
import android.util.Log; 
import android.content.Context; 


public class mailing extends Activity { 
    int[] mail_images= new int[]{0, R.drawable.simple, R.drawable.p}; 
    String[] mail_array_spinner = new String[]{getResources().getString(R.string.type_select),getResources().getString(R.string.maillist)}; 

    public int get_image_id(String check){ 
     int got=-1; 

     for(int i=0;i<mail_images.length;i++){ 
      if(mail_array_spinner[i].equals(check)){ 
       got=i; 
      } 
     } 
     return mail_images[got]; 
    } 
} 

我的應用程序讀取代碼和錯誤來窗體時停止請問這個問題?謝謝。

+1

什麼錯誤?我們無法修復我們無法猜到的東西 – Dici

+0

錯誤是在閱讀GETRESSOURCE時停止了應用程序!在日誌控制檯中說:我的文件的第XX行的致命例外......在我上面指定的行。 –

+1

發佈您的logcat。 –

回答

1

你還沒有寫onCreate()裏面的代碼,請執行下列操作

public class mailing extends Activity { 
     int[] mail_images; 
     String[] mail_array_spinner; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      mail_images= new int[]{0, R.drawable.simple, R.drawable.p}; 
      mail_array_spinner = new String[]{getResources().getString(R.string.type_select),getResources().getString(R.string.maillist)}; 


    } 

     public int get_image_id(String check){ 
      int got=-1; 
      mail_images= new int[]{0, R.drawable.simple, R.drawable.p}; 
      mail_array_spinner = new String[]{getResources().getString(R.string.type_select),getResources().getString(R.string.maillist)}; 
      for(int i=0;i<mail_images.length;i++){ 
       if(mail_array_spinner[i].equals(check)){ 
        got=i; 
       } 
      } 
      return mail_images[got]; 
     } 

}

+0

感謝您的回答,但是當我做出這種更改時,我得到'get_image_id()'不被識別!和'mail_images'和'mail_array_spinner'一樣 –

+0

檢查我編輯的答案。 –

+0

相同的東西:(我的東西必須是全球或類似的東西 –

1

您正在嘗試的活動之前調用getResources()已經建立,這會導致空指針例外。在onCreate()方法中調用getResources。

public class mailing extends Activity { 
int[] mail_images; 
String[] mail_array_spinner; 
    public void onCreate(Bundle savedInstanceState){ 
     super.OnCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mail_images = new int[]{0, R.drawable.simple, R.drawable.p}; 
     mail_array_spinner = new String[]{getResources().getString(R.string.type_select),getResources().getString(R.string.maillist)}; 
    } 
    public int get_image_id(String check){ 
     int got=-1; 

     for(int i=0;i<mail_images.length;i++){ 
      if(mail_array_spinner[i].equals(check)){ 
       got=i; 
      } 
     } 
     return mail_images[got]; 
    } 
} 
+0

怎麼樣'公共類郵件擴展Activity' –

+0

好,貼完整的答案 –

+0

我只是嘗試過,但我現在有這樣的錯誤:'顯示java.lang.NullPointerException:嘗試獲取長度null array'?任何修復? –