試して使用することができます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;
}
}
TestActivityでは、finishをオーバーライドして次のことを行うことができます。
@Override
public void finish() {
setResult(Activity.RESULT_OK, new Intent());
super.finish();
}
これにより、次のアクティビティが戻ってクリック機能が「再度有効になる」まで、クリックが1回だけ発生します。
- また -
退屈でブール値を維持し、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;
}
あなたは本当に退屈なはずですが、クロスアクティビティコールバックを使用することは常に楽しいです。:)