防止多次开始新活动

时间:2014-07-01 13:14:32

标签: android

我有一个简单的问题,在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,按钮后继续。

3 个答案:

答案 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);