7

onItemSelectedメソッドを呼び出さずに、選択したスピナーの位置を何かに変更することは可能ですか?

基本的に私がやろうとしているのは、選択するとダイアログが表示されるため、スピナーで以前に選択したアイテムに戻ることです。ユーザーが戻るボタンを押すと、スピナーは、ダイアログが閉じられたときにダイアログを表示する位置にいることを示します。

それで、元に戻すときに呼び出されないようにする方法はありますか、spinner.setSelection(position)またはダイアログを示す位置が選択されたままにならないようにする方法はありますか?

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
    switch(arg2){
    case 0:

        previousSelection = 1;
        mNavButtonClick.onNavButtonClick(1);

        break;
    case 1:
        previousSelection = 2;
        mNavButtonClick.onNavButtonClick(2);

        break;
    case 2:
        previousSelection = 3;
        mNavButtonClick.onNavButtonClick(3);
        break;
    case 3:
        previousSelection = 4;
        mNavButtonClick.onNavButtonClick(4);
        break;
    case 4:
        previousSelection = 5;
        mNavButtonClick.onNavButtonClick(5);
        break;
    case 5:
                    //this case shows the dialog
        mNavButtonClick.onNavButtonClick(6);
        break;
    default:
        break;
    }
}

ダイアログが表示されたら、ユーザーは [戻る] ボタンをクリックしてダイアログを閉じ、onDismissI call で

spinner.setSelection(previousSelection);

前の選択に戻りますが、これは私が望んでいないビューを再度作成します。私はすでにビューにいるので、スピナーのビューにいることを示したいだけです

4

2 に答える 2

1

私の知る限り、呼び出されている関数を停止する方法はありません。ただし、単純な if を使用して関数内のコードを実行しないことを選択できます (を使用する場合setSelection) ここで受け入れられた回答を確認してください:

望ましくない onItemSelected 呼び出し

于 2014-05-23T20:15:26.157 に答える