我想以编程方式检查函数是否被调用。如果之前调用过,那么不要允许和忽略第二次调用,如果没有则让按钮调用。为什么我需要这样做是因为我有一个longClick按钮来运行某些功能,如果用户忘记这样做,然而用户将点击另一个按钮,我将放置相同的功能。我需要防止两次运行相同的功能。
public class ActivityA extends Activity{
private static boolean isScreenShotTaken = false;
blankcard.setOnLongClickListener(new OnLongClickListener() {
if(!isScreenShotTaken)
{
Bitmap bitmap = takeScreenshot();
saveBitmap(bitmap);
isScreenShotTaken = true;
}
return false;
}
});
btnsend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(Templates.this, MailCard.class);
intent.putExtra("name", Name);
if(!isScreenShotTaken)
{
Bitmap bitmap = takeScreenshot();
saveBitmap(bitmap);
isScreenShotTaken = true;
}
startActivity(intent);
}
});
public Bitmap takeScreenshot() {
// code exist here
//if called once, second call ignore
}
public void saveBitmap(Bitmap bitmap) {
// code exist here
//if called once, second call ignore
}
}
感谢您的建议。
答案 0 :(得分:1)
我的版本:
我这样写:
// In the declaration section of your class.
private static boolean isScreenShotTaken = false;
// In the code.
btnsend.setOnClickListener
(
new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if(!isScreenShotTaken)
{
Bitmap bitmap = takeScreenshot();
saveBitmap(bitmap);
isScreenShotTaken = true;
}
}
}
);
blankcard.setOnLongClickListener
(
new OnLongClickListener()
{
@Override
public boolean onLongClick(View arg0)
{
if(!isScreenShotTaken)
{
Bitmap bitmap = takeScreenshot();
saveBitmap(bitmap);
isScreenShotTaken = true;
}
}
}
);
答案 1 :(得分:0)
简单:
public Bitmap takeScreenshot() {
// before start
blankcard.setEnabled(false);
btnsend.setEnabled(false);
// do your sutff
... here ...
// at the end
blankcard.setEnabled(true);
btnsend.setEnabled(true);
}
如果你正在使用AsyncTask或类似的,请将这些调用放在preExecute和postExecute中
答案 2 :(得分:0)
为什么不使用全局标志变量? 像,
btnsend.setOnClickListener(new View.OnClickListener() {
@Override
if(flag == true)
{
public void onClick(View v) {
// TODO Auto-generated method stub
// Bitmap bitmap = takeScreenshot();
// saveBitmap(bitmap);
flag = 1;
}
}
});
因此,即使调用了setOnClickListener,它也不会执行代码。
答案 3 :(得分:0)
如果你有一个按钮
按下按钮后..在onclickListener
中button.setclickable(false);
然后按下按钮。
如果你有一些方法。比拿一个gloabal布尔变量
boolean isFirstTime= false;
一旦你进入方法,就把它设置为true;
isFirstTime= true;