0

在我的应用程序中,我有许多视图可以启动活动或将片段添加到堆栈中。在这两种情况下,我都希望避免双击视图或点击两个相同的视图(如列表中的两个项目)可以多次启动相同的活动或片段。

这个问题已经被问过多次,唯一的解决方案是禁用整个活动(以任何方式)或在单击视图时禁用所有可单击视图。这适用于双击,但不适用于同时对两个视图进行多点触控。

此外,我希望找到一个更通用的解决方案。我有很多可点击的视图、很多活动和很多片段。

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 回答