在我的应用程序中,我有许多视图可以启动活动或将片段添加到堆栈中。在这两种情况下,我都希望避免双击视图或点击两个相同的视图(如列表中的两个项目)可以多次启动相同的活动或片段。
这个问题已经被问过多次,唯一的解决方案是禁用整个活动(以任何方式)或在单击视图时禁用所有可单击视图。这适用于双击,但不适用于同时对两个视图进行多点触控。
此外,我希望找到一个更通用的解决方案。我有很多可点击的视图、很多活动和很多片段。
在我的应用程序中,我有许多视图可以启动活动或将片段添加到堆栈中。在这两种情况下,我都希望避免双击视图或点击两个相同的视图(如列表中的两个项目)可以多次启动相同的活动或片段。
这个问题已经被问过多次,唯一的解决方案是禁用整个活动(以任何方式)或在单击视图时禁用所有可单击视图。这适用于双击,但不适用于同时对两个视图进行多点触控。
此外,我希望找到一个更通用的解决方案。我有很多可点击的视图、很多活动和很多片段。
我已经通过将它添加到我们的父 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。