2016-07-13 3 views
-1

大丈夫このエラーは多くの場合、stackoverflowスレッドで検索してみましたが役に立たなくなりました。私が本当に不満を持っているのを助けてください。NullPointerException - Spinnerは、findViewById()を適用しても常にnullに設定されています。

これはMenu.javaクラスのコードです。数字ピッカー、オートコンプリートテキストビュー、スピナーなどの3つのコンテナがあります。私は、3つのコンテナをすべて設定するために同じfindviewById()を使用しています。スピンナーだけがNull Pointer Exceptionを投げています。 3つのコンテナはすべて同じビューにあります。ここで

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fillViewport="true" 
    android:isScrollContainer="false"> 

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:background="#ffffff"> 

    <AutoCompleteTextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/menu_full" 
     android:hint="@string/select_item" 
     /> 

    <NumberPicker 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/numberPicker" 
     android:layout_alignParentEnd="true" 
     android:layout_below="@+id/menu_full" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/ordered_items" 
      android:id="@+id/some_text_view" 
      android:layout_centerVertical="true" 
      android:layout_alignParentStart="true" 
      android:textSize="20dp" /> 

     <Spinner 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/dekhane_ke_liye_spinner" 
      android:layout_below="@+id/some_text_view" 
      android:layout_alignParentStart="true" 
      android:spinnerMode="dropdown" /> 

    </RelativeLayout> 
</ScrollView> 

logcatされています:

07-13 14:57:05.589 21680-21680/com.example.gandhjee.pantry_order E/AndroidRuntime: FATAL EXCEPTION: main 
                        Process: com.example.gandhjee.pantry_order, PID: 21680 
                        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gandhjee.pantry_order/com.example.gandhjee.pantry_order.Menu}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                         at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                         at android.os.Looper.loop(Looper.java:148) 
                         at android.app.ActivityThread.main(ActivityThread.java:5417) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                        Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference 
                         at com.example.gandhjee.pantry_order.Menu.onCreate(Menu.java:69) 
                         at android.app.Activity.performCreate(Activity.java:6237) 
                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
                         at android.app.ActivityThread.-wrap11(ActivityThread.java)  
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
                         at android.os.Handler.dispatchMessage(Handler.java:102)  
                         at android.os.Looper.loop(Looper.java:148)  
                         at android.app.ActivityThread.main(ActivityThread.java:5417)  
                         at java.lang.reflect.Method.invoke(Native Method)  
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  

私は、私はまだ、このエラーを取得しています理由はわかりません

public class Menu extends AppCompatActivity { 

     AutoCompleteTextView autoCompleteTextView; 
     ArrayList<String> ekdum_final_order_names = new ArrayList<>(); 
     ArrayAdapter<String> adapter_menu; 
     ArrayAdapter<String> adapter ; 
     Spinner spinner ; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_menu); 
      autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.menu_full); 
      //item_names = getResources().getStringArray(R.array.menu_items); 
      adapter_menu = new ArrayAdapter<>(this, R.layout.item_layout,R.id.txt,stringArray); 
      ArrayAdapter<String> adapter_menu = new ArrayAdapter<>(this,android.R.layout.simple_expandable_list_item_1,stringArray); 
        autoCompleteTextView.setAdapter(adapter_menu); 


      spinner = (Spinner)findViewById(R.id.dekhane_ke_liye_spinner); 
      adapter = new ArrayAdapter<>(this,android.R.layout.simple_expandable_list_item_1,ekdum_final_order_names); 
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinner.setAdapter(adapter); 
      //number picker 

      nopicker = (NumberPicker)findViewById(R.id.numberPicker); 
      if (nopicker != null) { 
       nopicker.setMaxValue(10); 
       nopicker.setMinValue(1); 
       nopicker.setWrapSelectorWheel(false); 
      } 
      onClickListenerButton(); 
     } 
     public void onStart(){ 
     super.onStart(); 
     RequestQueue requestQueue= Volley.newRequestQueue(this); 
     // Create json array request 
     JsonArrayRequest jsonArrayRequest=new JsonArrayRequest(Request.Method.POST,"http://170.241.241.198/volley.php",new Response.Listener<JSONArray>(){ 
      public void onResponse(JSONArray jsonArray){ 

        for(int i=0;i<jsonArray.length();i++){ 
        try { 
         JSONObject jsonObject=jsonArray.getJSONObject(i); 
         stringArray.add(jsonObject.getString("items")); 
         stringArray_id.add(jsonObject.getString("id")); 
         stringArray_price.add(jsonObject.getString("Price")); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
       adapter_menu.notifyDataSetChanged(); 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError volleyError) { 
       Log.e("Error", "Unable to parse json array"); 
      } 
     }); 
     requestQueue.add(jsonArrayRequest); 
    } 
} 

これはactivity_menu.xmlファイルのコードがあります。どんな助けでも歓迎されるでしょう。

P.S. - これはWhat is a NullPointerException, and how do I fix it?の複製ではありません。すでにこのスレッドをチェックして何も問題を解決していないからです。私はこのスレッドを使用して番号ピッカーになっていたNullPointerの例外を解決したが、私はスピンナーに乗っているNullPointerの例外を取り除くことができません。だからdownvote前に人をdownvoteやatleast解決策を提供しないでください。

+0

ここでlogcatは – comeback4you

+0

です。logcat: –

+0

doプロジェクト - > Clean –

答えて

0

問題がスピナーではありません、それはあなたのコードで、これらの二行

 adapter = new ArrayAdapter<>(this,android.R.layout.simple_expandable_list_item_1,ekdum_final_order_names); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
0

のコメントを外しあなたが取得Thatsなぜあなたのアダプタにヌル配列を渡しているこの行を確認し、アダプタのスピナーに

ですエラー。

item_names = getResources().getStringArray(R.array.menu_items); 

、あなたがstringArrayを宣言して初期化されstringArrayを渡している、あなたのケースで をアダプタに、この配列を渡しますか?

//stringArray= getResources().getStringArray(R.array.menu_items); 
    adapter_menu = new ArrayAdapter<>(this, R.layout.item_layout,R.id.txt,stringArray); 
+0

item_namesをどこにも使用していないのはなぜですか? –

+0

あなたがここにあなたのアダプターにのStringArrayを渡している 'adapter_menu =新しいArrayAdapter <>(これは、R.layout.item_layout、R.id.txt、のStringArray);'ところ、この宣言と初期化です。更新された答えを参照してください –

+0

私は、コードでは、stringArray変数がonStart()メソッドのコードで後で初期化され、それが完璧に動作することを示してhavent。アダプター* adpter_menu *はオートコンプリート・テキスト・ビューに使用され、オートコンプリート・テキスト・ビューは例外をスローしません。スピナーは例外です。何かがonStart' 'で宣言し、' OnCreate'はないdeclare.OnCreateがONSTART前に呼び出され気にいらを使用傾けるためOnCraete'が不可能な 'で使用している場合は、スピナーのために使用されるアダプタは、アダプタ* * –

0

あなたのデータはArrayAdapterで使用できないため、NullPointer Exceptionが表示されます。 これを試してください。

ArrayList<String> countries = new ArrayList<String>(); 
countries.add("India"); 
countries.add("Canada"); 
countries.add("U.S"); 


ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, countries); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(adapter); 

私はあなたに役立つことを願っています。

+0

私はこれをしました。それでも私には同じエラーがあります。 –

+0

プロジェクトをクリアするビルド - >プロジェクトをクリアして実行してください。 – suraj