gpt4 book ai didi

Android:一段时间后禁用按钮

转载 作者:行者123 更新时间:2023-11-29 14:27:52 25 4
gpt4 key购买 nike

我正在创建一个应用程序,当按下按钮时,它会在“for 循环”中生成一些啁啾声,我想在循环期间阻止按钮,并在循环结束时释放它们。

我试过了,但是应用程序崩溃了:

package android.nacho.UltraSoundSender;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class UltraSoundSender extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ultra_sound_sender);


Button btnCode = (Button) findViewById(R.id.btnCode);
btnCode.setOnClickListener(new OnClickListener() {

//@Override
public void onClick(View arg0) {

enableButton(false);

new Thread( new Runnable( )
{
public void run( )
{

//working=false;
// int Code=Integer.parseInt(((EditText)findViewById(R.id.Code)).getText().toString());
//((EditText)findViewById(R.id.Code)).setText("");
String word= ((EditText)findViewById(R.id.Code)).getText().toString();
Integer digits[]= new Integer[64];
int NumChar= word.length();

//This split the string in chars
for(int i = 0; i < NumChar ; i++){

digits[i]=(int)word.charAt(i);

}

//Values of the chirp
int startFreq = 3000;
int endFreq = 7000;
double impulseDuration = 50;



for(int IndexChar= 0; IndexChar< NumChar ; IndexChar++)
{

new ChirpGenerator().playDOWN(startFreq, endFreq, impulseDuration, digits[IndexChar]);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


enableButton(true);
}

} ).start();

}
});


}

//Enable/disable button
private void enableButton(boolean isEnable)
{
((Button)findViewById(R.id.btnCode)).setEnabled(isEnable);

}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_ultra_sound_sender, menu);
return true;


}
}

我在 logcat 中得到这个错误:

06-19 11:15:00.852: E/AndroidRuntime(29419): FATAL EXCEPTION: Thread-5516 06-19 11:15:00.852: E/AndroidRuntime(29419): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4746) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:854) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4077) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.view.View.invalidate(View.java:10322) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.widget.TextView.invalidateDrawable(TextView.java:4601) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.graphics.drawable.DrawableContainer.invalidateDrawable(DrawableContainer.java:250) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.graphics.drawable.Drawable.invalidateSelf(Drawable.java:338) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.graphics.drawable.Drawable.setVisible(Drawable.java:549) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.graphics.drawable.DrawableContainer.selectDrawable(DrawableContainer.java:307) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.graphics.drawable.StateListDrawable.onStateChange(StateListDrawable.java:106) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.graphics.drawable.Drawable.setState(Drawable.java:465) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.view.View.drawableStateChanged(View.java:14281) 06-19 11:15:00.852: E/AndroidRuntime(29419): at android.widget.TextView.drawableStateChanged(TextView.java:3184)

我应该在哪里调用启用函数?我想超出了主题,但是如何呢?

最佳答案

当按钮被点击时...直到再过 5 秒它才可点击

btnCode.setOnClickListener(new OnClickListener()
{
public void onClick(final View v)
{
v.setClickable(false);
new Handler().postDelayed(new Runnable()
{
public void run()
{
v.setClickable(true);
}
}, 500);

}
});

在 for 循环中用你的估计替换时间

关于Android:一段时间后禁用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17187179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com