Androidで奇妙なイベント処理の影響を受けています。私の問題は、ユーザーがButton
を何度もクリックすると、実際に何度も素早くイベントがキューに入れられ、次のActivity
にさらに転送されるということです。ここでクリックイベントが次の開始アクティビティに転送されました
は一例です:
<Button
android:id="@+id/btn_home_show"
style="@style/main_buttons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/home_label_show" />
Activity
onClick
:
Activity
で
public void onClick(View view) {
int viewId = view.getId();
if (viewId == EXPECTED_VIEW_ID) {
Intent intent = new Intent(this, CarouselActivity.class);
startActivity(intent);
}
}
私は、画面上の同じ座標でクリック可能である別のアイテムを持っています。何が起こる
は、ユーザーのクリックは本当に速いButton
に、このクリックイベントが新しく開始されたActivity
に転送している場合、別のonClick
処理が発生することがあります。
私は2.3.3 & 2.3.5フレームワークのバージョン&動作は同じであるを試してみました。何か案は?
この縫い目は回避策と似ていますが、この方法では、開始するすべてのアクティビティと作成したすべてのビューでこれを行うことになっています。これは悪く見えます;-)たぶん、アクティビティの開始時にキューをリセットする方法がありますか? –
私はリセットする方法がないと思います。リセットが最後のクリックの前に起きた場合(つまり、ユーザーがいまだに馬鹿げたようにクリックしている)、このコードを使用しますが、グローバルアプリケーションクラスと整数どのタイプの入力であるかを教えてください。asynctaskと同じですが、入力を表す整数を取ります。例えば、バックプレスされ、そのタイプの入力をロックします。 このような誤った誤ったクリックからユーザーを保護することができます。愚かなことにクリックしてしまった場合、アプリを愚かな行動から守ることはあまりありません。 – triggs
次に、gridview全体をロックします。 – triggs