我有一个简单的问题,在mu app中,用户必须单击按钮才能开始新活动,但如果他在按钮上快速点击几次,则会多次启动该活动。我已经捏造了:
holder.btnChoose.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
synchronized (this) {
holder.btnChoose.setEnabled(false);
mListener.onChoose(item);
holder.btnChoose.setEnabled(true);
}
}
});
在mListener.onChoose中的位置
public void onChoose(boolean value)
{
Intent intent = new Intent(this, OfferSelectDatesActivity.class);
startActivity(intent);
}
但这不起作用。似乎是startActivity(intent);在另一个线程中工作,并在启用btnChoose,按钮后继续。
答案 0 :(得分:1)
这可能看起来有些偏执,但有效。 在你的类中创建一个全局布尔值:boolean alreadyClicked;
button.setOnClickListener(new OnClickListener(){
@Override
public void onCLick(View v)
{
if(!alreadyClicked)
{
startActivity(new Intent(this, OfferSelectDatesActivity.class));
alreadyClicked = true;
}
}
});
然后在onResume()Activity回调中将此变量设置为false:
@Override
protected void onResume()
{
super.onResume();
alreadyClicked = false;
}
答案 1 :(得分:0)
只需使用OnClickListener即可。该类只调用onClick方法一次:
button.setOnClickListener(new OnClickListener(){ @Override public void onCLick(View v){ startActivity(new Intent(this, OfferSelectDatesActivity.class)); } });
答案 2 :(得分:0)
在 Androidmanifest.xml 中使用android:launchMode="singleTop"
进行多次不想发布的活动。
或者以编程方式执行以下操作:
Intent i = new Intent(getBaseContext(), YourActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);