在我的UI线程中,我有以下代码可以完美地运行
public void showButtons(boolean visible) {
if (visible) {
mTextView.setText(currentSwipe.cardID);
btnSignIn.setVisibility(Button.VISIBLE);
btnSignOut.setVisibility(Button.VISIBLE);
}
else {
mTextView.setText(R.string.Please_swipe);
btnSignIn.setVisibility(Button.INVISIBLE);
btnSignOut.setVisibility(Button.INVISIBLE);
}
}
我也有这个Async类
private class AwaitResponse extends AsyncTask<clockItem, Void, Boolean>{
protected Boolean doInBackground(clockItem... params){
clockItem rSwipe = (clockItem)params[0];
Calendar cSwipe = rSwipe.swipeDate;
SystemClock.sleep(5000);
if (currentSwipe.swipeDate == cSwipe)
{
currentSwipeSave();
return true;
}
return false;
}
protected void onPostExecute(Boolean SwipeActive){
if (SwipeActive) {
btnSignIn.setVisibility(Button.INVISIBLE);
btnSignOut.setVisibility(Button.INVISIBLE);
mTextView.setText(R.string.Please_swipe);
}
}
}
在onPostExecute中,我尝试调用showButtons(false),它与此代码具有相同的结果,即更改mTextView上的文本但保持Buttons可见。他们似乎被禁用但仍然可见。如果我注释掉setText行,Buttons会正确反应,即消失。
我错过了一些明显的东西吗?
这个想法是一旦读取了nfc滑动,就会向用户显示2个按钮。如果5秒后没有按下任何按钮,则对滑动提起不确定的方向。如果按下某个按钮,则会提示相应的方向,并且屏幕将重置(隐藏按钮并显示默认文本),准备进行下一次滑动。如果记录滑动,则不按任何按钮并在5秒内完成新的滑动,之前的滑动是具有不确定方向的文件,并显示新的滑动选项。
所有这些似乎与5秒超时后的屏幕重置不同。任何想法为什么会这样?
答案 0 :(得分:1)
更改
btnSignIn.setVisibility(Button.INVISIBLE);
到
btnSignIn.setVisibility(View.INVISIBLE);
答案 1 :(得分:0)
试试这个......
public void showButtons(boolean visible) {
if (visible) {
mTextView.setText(currentSwipe.cardID);
btnSignIn.setVisibility(View.VISIBLE);
btnSignOut.setVisibility(View.VISIBLE);
}
else {
mTextView.setText(R.string.Please_swipe);
btnSignIn.setVisibility(View.INVISIBLE);
btnSignOut.setVisibility(View.INVISIBLE);
}
}
private class AwaitResponse extends AsyncTask<clockItem, Void, Boolean>{
protected Boolean doInBackground(clockItem... params){
clockItem rSwipe = (clockItem)params[0];
Calendar cSwipe = rSwipe.swipeDate;
SystemClock.sleep(5000);
if (currentSwipe.swipeDate == cSwipe)
{
currentSwipeSave();
return true;
}
return false;
}
protected void onPostExecute(Boolean SwipeActive){
if (SwipeActive) {
showButtons(!SwipeActive);
}
}
}