2016-08-22 5 views
1

Ich habe Probleme beim Erstellen eines ArrayAdapter auf meinem Spinner. Ich weiß nicht, wie ich euch erklären soll, aber die Leute sagen, ein Bild sagt 1000 Worte. also gebe ich ein Bild von meinem Problem. Bitte helfen Sie mir, ich weiß wirklich nicht, was ich tun soll.createFromResources() in ArrayAdapter kann nicht auf Spinner

this is my error

das ist meine Klasse

public class SettingFragment extends Fragment{ 

private View rootView; 
Spinner spinner; 
ArrayAdapter<CharSequence> adapter; 

public SettingFragment(){ 
    //required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    rootView = inflater.inflate(R.layout.fragment_setting, container, false); 

    spinner = (Spinner)rootView.findViewById(R.id.spinner); 
    adapter = ArrayAdapter.createFromResource(this, R.array.select_font_size, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 

    return rootView; 
} 

}

dies mein string.xml ist

<string-array name="select_font_size"> 
    <item>Small</item> 
    <item>Default</item> 
    <item>Large</item> 
    <item>Larger</item> 
</string-array> 

und das ist mein xml-Code

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 


<Spinner 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/spinner" 
    android:layout_gravity="center_horizontal" /> 

Antwort

1

Ich würde vorschlagen, die Schaffung des Adapters innerhalb des onActivityCreated Rückruf zu bewegen, wenn Sie sicher sind, dass getActivity() durch den Aufruf Sie eine nicht null Instanz der Aktivität erhalten wird:

public class SettingFragment extends Fragment{ 

private View rootView; 
Spinner spinner; 
ArrayAdapter<CharSequence> adapter; 

public SettingFragment(){ 
    //required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    rootView = inflater.inflate(R.layout.fragment_setting, container, false); 
    spinner = (Spinner)rootView.findViewById(R.id.spinner); 

    return rootView; 
} 

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    adapter = ArrayAdapter.createFromResource(getActivity(), R.array.select_font_size, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinner.setAdapter(adapter); 
    } 
} 
+0

Vielen Dank! es funktioniert ! – HesZrave

0

Versuchen Sie, den Anwendungskontext oder den Kontext der Aktivität zu verwenden, die das Fragment instanziiert.

adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.select_font_size, android.R.layout.simple_spinner_item); 

ODER

adapter = ArrayAdapter.createFromResource(YOUR_ACTIVITY_CONTEXT_TO_BE_PASSED_INTO_FRAGMENT, R.array.select_font_size, android.R.layout.simple_spinner_item); 
Verwandte Themen