2017-02-02 1 views
-2

Meine Absturz Anwendung, wenn ich Spinner in Fragmente verwenden.Spinner arbeiten nicht in Fragmente

public class TestRideFragment extends Fragment implements AdapterView.OnItemSelectedListener { 

    String[] country = { "India", "USA", "China", "Japan", "Other", }; 

    public TestRideFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 

     //return inflater.inflate(R.layout.fragment_test_ride, container, false); 
     View v = inflater.inflate(R.layout.fragment_test_ride, container, false); 

     Spinner spin = (Spinner) getView().findViewById(R.id.spinner1); 
     spin.setOnItemSelectedListener(this); 

     //Creating the ArrayAdapter instance having the country list 
     ArrayAdapter aa = new ArrayAdapter(getContext(),android.R.layout.simple_spinner_item,country); 
     aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     //Setting the ArrayAdapter data on the Spinner 
     spin.setAdapter(aa); 

     return v; 
    } 

    @Override 
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { } 

    @Override 
    public void onNothingSelected(AdapterView<?> adapterView) { } 
} 

Könnte mir jemand helfen, die Probleme mit meinem Code vor Ort, bitte?

+0

Wo ist dein logcat? –

+1

Ich denke, Sie müssen zusätzliches Komma nach "Andere" in Ihrem Land-Array löschen. –

+0

Veröffentlichen Sie Ihre XML-Code – AbhayBohra

Antwort

0

Versuchen v.findViewById(R.id.spinner1) auch sicherstellen, dass mit, dass spinner1 in dem XML-Layout fragment_test_ride

deklariert wird

Try-Array in strings.xml Zugabe die

<array name="countries"> 
    <item>India</item> 
    <item>USA</item> 
    <item>China</item> 
    <item>Japan</item> 
    <item>Other</item> 
</array> 

und in Ihrem xml

<android.support.v7.widget.AppCompatSpinner 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:entries="@array/countries" 
    android:id="@+id/spinner1" /> 

entfernen ArrayAdapter, aber nicht diese Option wird Ihre Optionen statisch machen basierend auf was im Array deklariert in der Zeichenfolge xml

+0

Unten ist der XML-Code --- – sanjay

+0

sanjay

+0

XML für Spinner – sanjay

0

Code ändern:

Spinner spin = (Spinner) getView().findViewById(R.id.spinner1); 

In diese:

Spinner spin = (Spinner) v.findViewById(R.id.spinner1); 
+0

ich die von Ihnen, Seine adaequat vielen Dank geführte geändert, eine einfache Lösung zu bilden. – sanjay

+0

Gern geschehen, gerne helfen – Meowok

1

Sie versuchen Ansicht zu erhalten, bevor es erstellt wird ist also, warum es null zurückkehrt.

So können Sie wie tun,

Spinner spin = (Spinner) v.findViewById(R.id.spinner1); 

oder können Sie Ihren Code onViewCreated bewegen, wo Ansicht erstellt werden

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 

    return inflater.inflate(R.layout.fragment_test_ride, container, false); 



} 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    Spinner spin = (Spinner) view.findViewById(R.id.spinner1); 
    spin.setOnItemSelectedListener(this); 

    //Creating the ArrayAdapter instance having the country list 
    ArrayAdapter aa = new ArrayAdapter(getContext(), android.R.layout.simple_spinner_item, country); 
    aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    //Setting the ArrayAdapter data on the Spinner 
    spin.setAdapter(aa); 
} 
0

Vielleicht ist das Problem in Ihrem Adapter ist, die sein sollte ;

ArrayAdapter<CharSequence> aa= ArrayAdapter.createFromResource(this, 
    country, android.R.layout.simple_spinner_item); 

und Sie haben;

ArrayAdapter<CharSequence> aa= ArrayAdapter.createFromResource(this, 
    android.R.layout.simple_spinner_item, country); 
Verwandte Themen