私は、ユーザーがギャラリーをブラウズし、選択したイメージを選択し、その選択を変更せずにギャラリーをブラウズできるギャラリーがあります。これは、onItemSelectedを使用して、選択している(つまり、クリックした)画像が既に選択されている画像(ギャラリーの動きによって)であるかどうかを確認することによって機能します。したがって:ギャラリーがオリエンテーション変更後にonItemSelectedを呼び出す
- ユーザーはギャラリーを前後に移動します。
- ユーザーは好みの画像を決め、ギャラリーをその中心に配置します。
- ユーザーが画像をクリックすると、「選択済み」になり、緑色の枠線が表示されます。
- ユーザーは、現在中心の画像が自動的に「選択」されることなく、ギャラリー内を前後に移動し続けることができます。
これは問題ありません。しかし、私は今、画像を選択しているときにオリエンテーションの変更を許可しようとしていますが、私が見つけたことは、onConfigChangedコードがすべて実行された後にonItemSelectedがギャラリーで呼び出されることです。
だからonConfigChangeパラメータ(つまり、向きを変更する前にギャラリーがあったインデックス)を設定してから、私はinitialiseUIメソッドを呼び出します。これは、正常に実行され、オリエンテーションが変更される前に配置された同じインデックスにギャラリーを配置することを含め、必要なものすべてを設定します。しかし、中央の画像ではonItemSelectedが呼び出されます。これにより、中央の画像がユーザーの選択なしに選択されます(緑の枠線など)。
configIsChangingがfalseの場合にのみ、ブールフラグ "configIsChanging"を使用してonItemSelectedコードを実行しようとしました。残念ながら、onConfigChangeが完了した後にonItemSelectedが呼び出され、その時点でフラグがfalseにリセットされているため、これはうまくいかないようです。
@Override
public void onConfigurationChanged(Configuration newConfig) {
configChanging = true;
tempConfigDisplayedIndex = mGallery.getSelectedItemPosition();
super.onConfigurationChanged(newConfig);
setContentView(R.layout.take_questionnaire);
initialiseUI();
configChanging = false;
}
は、誰もが不正onItemSelectedイベントの経験がありましたか?何か案は?必要に応じてさらにコードを投稿することができます。助けてくれてありがとうございました。
を気にしないだろうビットを残してきました。それは潜在的な回答として一連の画像をそれぞれ有する多数の「質問」を反復し、ユーザは各質問に対して1つを選択しなければならない。私のコードで構成の変更を処理しない限り、向きの変更によってユーザーは最初の質問に戻ります。 – breadbin
問題の原因を理解していますが、デバッグに役立ちます。http://developer.android.com/guide/topics/manifest/activity-element.html#config and http://stackoverflow.com/questions/456211/activity-restart-on-rotation-android。onRetainNonConfigurationStateにonSavedInstanceStateを使用することです。 – josephus
私は一見ありがとうございます。 – breadbin