2

たくさんの州名を持つスピナーがあります。ではonCreate()、デフォルト値に設定しました。Spinner 配列のインデックス 0 は「アラバマ」です。

String state = "California"; //preset to this

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_state_and_drivers_license);

    statesSpinner = (Spinner)findViewById(R.id.states_spinner);
    adapter = (ArrayAdapter<String>)statesSpinner.getAdapter();
    statesSpinner.setSelection(adapter.getPosition(state));

    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(cameraIntent, RESULT_CAMERA);    
}

ただし、onResult の後、Spinner は再び「Alabama」に設定されます。つまり、既存の選択された値を保持する必要があると思っていたにもかかわらず、配列のインデックス 0 に戻ります。

編集: setSelection(position) を onCreate、onResume、および onDestroy に入れました。それでも、カメラ インテントから戻ると、スピナーはリセットされ、選択範囲に移動しません。

4

4 に答える 4

0

本当にシンプルで、この投稿に従って解決した同じ問題は本当に役に立ちます。

多くのもの(選択した画像、スピナーなど)の状態が失われますが、リンクをたどることで簡単に回復できます。

方向の変更時に選択したスピナー/ドロップダウン項目の状態を保持するにはどうすればよいですか?

ありがとう、

于 2015-10-16T10:49:52.503 に答える
-1
static int position=-1;
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
                public void onItemSelected(AdapterView<?> parent,
                        View view, int arg2, long arg3) {
                   position=arg2;  
                }
                public void onNothingSelected(AdapterView<?> arg0) {
                }
            });
    @Override
    protected void onResume() {
        super.onResume();
        if(position!=-1){
        spinner.setSelection(position);
        }
于 2013-07-12T17:06:07.323 に答える
-1
static int POSITION =0;
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
              POSITION=pos;
}

public void onNothingSelected(AdapterView<?> parent) {

}
});

@Override
public void onResume() {
    super.onResume();       
    spinner.setSelection(POSITION);
}
于 2016-06-10T12:10:40.027 に答える