您可以尝试和使用startActivityForResult()
。
private static final int REQUEST_CODE_MAKE_CLICKABLE = 1;
private boolean mAlreadyClicked = false;
private OnClickListener playClickListener() {
return new OnClickListener() {
@Override
public void onClick(View v) {
if(mAlreadyClicked) return;
mAlreadyClicked = true;
Intent intent = new Intent(getActivity(), TestActivity.class);
startActivityForResult(intent, REQUEST_CODE_MAKE_CLICKABLE);
}
};
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_CODE_MAKE_CLICKABLE && resultCode == Activity.RESULT_OK) {
mAlreadyClicked = false;
}
}
,并在您的测试活动,您可以覆盖完成,以做到以下几点:
@Override
public void finish() {
setResult(Activity.RESULT_OK, new Intent());
super.finish();
}
这将导致点击被解雇只有一次,直到下一次活动的收益和“重新启用”点击功能。
- 或 -
你可能是枯燥的,并保持布尔和简单的 “重置” 它的onResume():
private boolean mAlreadyClicked = false;
private OnClickListener playClickListener() {
return new OnClickListener() {
@Override
public void onClick(View v) {
if(mAlreadyClicked) return;
mAlreadyClicked = true;
Intent intent = new Intent(getActivity(), TestActivity.class);
startActivity(intent, REQUEST_CODE_MAKE_CLICKABLE);
}
};
}
@Override
public void onResume() {
super.onResume();
mAlreadyClicked = false;
}
您真的应该是枯燥的,但使用交叉Activity回调总是很有趣。 :)
谢谢!我为无聊的方式去了 - 希望有更优雅的东西。工作正常 - 这是主要的事情! – serenskye