web-dev-qa-db-ja.com

スピナーをフラグメントに設定する

public final class Manual extends FragmentonCreateViewにあるフラグメントの1つにある文字列配列からスピナーの値を設定しようとしています。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.manual, container, false);

    String [] values = 
        {"Time at Residence","Under 6 months","6-12 months","1-2 years","2-4 years","4-8 years","8-15 years","Over 15 years",};
    Spinner spinner = (Spinner) v.findViewById(R.id.spinner1);
    ArrayAdapter<String> LTRadapter = new ArrayAdapter<String>(this.getActivity(), Android.R.layout.simple_spinner_item, values);
    LTRadapter.setDropDownViewResource(Android.R.layout.simple_dropdown_item_1line);
    spinner.setAdapter(LTRadapter);

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

}

コードでエラーは発生しませんが、スピナーが設定されません。スピナーは値なしで空白のままです。私のコードがスピナーを設定しない理由について何かアイデアはありますか?

9
Nick

問題は、設定したビューではなく、新しいビューを返すことでした。そうしなければならなかった return v;そしてそれはうまくいきました。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.manual, container, false);

    String [] values = 
        {"Time at Residence","Under 6 months","6-12 months","1-2 years","2-4 years","4-8 years","8-15 years","Over 15 years",};
    Spinner spinner = (Spinner) v.findViewById(R.id.spinner1);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(), Android.R.layout.simple_spinner_item, values);
    adapter.setDropDownViewResource(Android.R.layout.simple_dropdown_item_1line);
    spinner.setAdapter(adapter);

    return v;

}
28
Nick