Mysterious NullPointerException throws when working with Spinner

I have clickable TextView and Spinner whose visibility is set to GONE .

This is my layout fragment:

 <TextView android:id="@+id/strip1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" Order Name ID Description Type" android:textSize="15dip" android:textStyle="bold" android:clickable="true" android:gravity="left" android:textColor="#ffffff" android:layout_weight="1" /> <Spinner android:id="@+id/sortSpinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawSelectorOnTop="true" android:visibility="gone" android:clickable="true" android:prompt="@string/prompt" /> 

In onCreate , I have this:

 TextView strip = (TextView)findViewById(R.id.strip1); strip.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { spinner_show(); } }); 

spinner_show() as follows:

 private void spinner_show() { String str = new String[2]; str[0] = "Ascending"; str[1] = "Descending"; Spinner sortSpin = (Spinner)findViewById(R.id.sortSpinner); ArrayAdapter<String> sizeArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, str); sizeArrayAdapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); sortSpin.setAdapter(sizeArrayAdapter); sortSpin.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) { } public void onNothingSelected(AdapterView<?> parent) { } }); 

The application throws a NullPointerException , and I cannot understand why.

Here is the logcat snippet:

 12-14 14:57:31.388: W/dalvikvm(3794): threadid=1: thread exiting with uncaught exception (group=0x40015560) 12-14 14:57:31.468: E/AndroidRuntime(3794): FATAL EXCEPTION: main 12-14 14:57:31.468: E/AndroidRuntime(3794): java.lang.NullPointerException 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:376) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.Spinner$DropDownAdapter.getDropDownView(Spinner.java:332) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.Spinner$DropDownAdapter.getView(Spinner.java:328) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.AbsListView.obtainView(AbsListView.java:1409) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.ListView.measureHeightOfChildren(ListView.java:1216) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.ListView.onMeasure(ListView.java:1127) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.view.View.measure(View.java:8313) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.view.View.measure(View.java:8313) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) 12-14 14:57:31.468: E/AndroidRuntime(3794): at com.android.internal.widget.WeightedLinearLayout.onMeasure(WeightedLinearLayout.java:60) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.view.View.measure(View.java:8313) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.view.View.measure(View.java:8313) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.view.View.measure(View.java:8313) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.view.ViewRoot.performTraversals(ViewRoot.java:839) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.os.Handler.dispatchMessage(Handler.java:99) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.os.Looper.loop(Looper.java:123) 12-14 14:57:31.468: E/AndroidRuntime(3794): at android.app.ActivityThread.main(ActivityThread.java:3683) 12-14 14:57:31.468: E/AndroidRuntime(3794): at java.lang.reflect.Method.invokeNative(Native Method) 12-14 14:57:31.468: E/AndroidRuntime(3794): at java.lang.reflect.Method.invoke(Method.java:507) 12-14 14:57:31.468: E/AndroidRuntime(3794): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 12-14 14:57:31.468: E/AndroidRuntime(3794): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 12-14 14:57:31.468: E/AndroidRuntime(3794): at dalvik.system.NativeStart.main(Native Method) 

What am I missing?

+4
source share
2 answers

OK, first of all, your xml layout file,

  <TextView android:id="@+id/strip1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" Order Name ID Description Type" android:textSize="15dip" android:textStyle="bold" android:clickable="true" android:gravity="left" android:textColor="#ffffff"/> <Spinner android:id="@+id/sortSpinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawSelectorOnTop="true" android:visibility="gone" android:clickable="true" android:prompt="@string/prompt"/> 

In your XML file, your TextView has android:layout_weight="1" , so its cover has the entire layout, there is no space for Spinner (this also does not raise a NullPointerException, so it is not needed),

Now from your java class file,

  private void spinner_show() { String[] str=new String[2]; // problem on declaring String array str[0]="Ascending"; str[1]="Descending"; Spinner sortSpin = (Spinner)findViewById(R.id.sortSpinner); ArrayAdapter<String> sizeArrayAdapter = new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item,str); sizeArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sortSpin.setAdapter(sizeArrayAdapter); sortSpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) { } public void onNothingSelected(AdapterView<?> parent) { } }); sortSpin.setVisibility(View.VISIBLE); // also you don't Visiable your spinner } 

And most importantly, its work is fine in my eclipse , I just removed the android:prompt="@string/prompt" attribute from the xml file because I don't have a string hint ..

0
source

Since you made the spinner appear as departed, how can it show your spinner.

so call sortSpin.SetVisibility(View.VISIBLE);

0
source

Source: https://habr.com/ru/post/1386271/


All Articles