0

私のアプリには、アクティビティを起動するか、フラグメントをスタックに追加する多くのビューがあります。どちらの場合も、ビューをダブルタップするか、同じビューを 2 つ (リスト内の 2 つの項目など) タップすると、同じアクティビティまたはフラグメントが複数回開始される可能性があることを回避したいと考えています。

この質問はすでに複数回尋ねられており、唯一の解決策は、アクティビティ全体を (何らかの方法で) 無効にするか、ビューがクリックされたときにクリック可能なビューをすべて無効にすることです。これはダブルタップには機能しますが、同時に 2 つのビューのマルチタッチタップには機能しません。

さらに、より一般的な解決策を見つけたいと考えています。クリック可能なビュー、アクティビティ、フラグメントがたくさんあります。

4

1 に答える 1

0

これを親Activityクラスに追加することで解決しました:

private Intent mActivityStarted = null;

[...]

@Override
public void startActivity(Intent intent) {
    if (mActivityStarted == null || mActivityStarted == intent) {
        mActivityStarted = intent;
        super.startActivity(intent);
    }
}

@Override
public void startActivityForResult(Intent intent, int requestCode) {
    if (mActivityStarted == null || mActivityStarted == intent) {
        mActivityStarted = intent;
        super.startActivityForResult(intent, requestCode);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    mActivityStarted = null;
    super.onActivityResult(requestCode, resultCode, data);
}

これを親 Fragment クラスにも追加し、(( OurParentActivityClass ) getActivity()) を使用して同じ mActivityStarted を共有します。getterForMActivityStarted ()

フラグメントを一度だけ起動するために、同じ mActivityStarted も変更するようにしました。

于 2013-08-27T21:11:39.540 に答える