Android fragments 按下按钮时更新进度条不会';我不能在碎片中工作
此代码在活动中正常工作,但在片段中不能正常工作,因为某些原因,当按钮关闭并进入可运行的问题按钮时。ispressed()返回false。我不明白Android fragments 按下按钮时更新进度条不会';我不能在碎片中工作,android-fragments,Android Fragments,此代码在活动中正常工作,但在片段中不能正常工作,因为某些原因,当按钮关闭并进入可运行的问题按钮时。ispressed()返回false。我不明白 button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent arg1) { if (arg1.getAction() == Mot
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if (arg1.getAction() == MotionEvent.ACTION_DOWN) {
arg0.post(rotationRunnable);
} else if (arg1.getAction() == MotionEvent.ACTION_UP) {
progress.setProgress(0);
}
return false;
}
});
public Runnable rotationRunnable = new Runnable() {
int mProgressStatus = 0;
@Override
public void run() {
try {
if(button.isPressed()) {
if (mProgressStatus < 100) {
mProgressStatus++;
progress.setProgress(mProgressStatus);
button.postDelayed(rotationRunnable, 20);
} else {
sendMessageToService("");
mProgressStatus = 0;
Thread.currentThread().interrupt();
}
} else {
if (mProgressStatus > 0) {
mProgressStatus--;
progress.setProgress(mProgressStatus);
button.postDelayed(rotationRunnable, 20);
if (mProgressStatus == 0) {
Thread.currentThread().interrupt();
}
}
}
}catch(Exception e){
System.out.println(e)
}
}
};
button.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图arg0、运动事件arg1){
if(arg1.getAction()==MotionEvent.ACTION\u向下){
arg0.post(可旋转运行);
}else if(arg1.getAction()==MotionEvent.ACTION\u UP){
进度。设置进度(0);
}
返回false;
}
});
public Runnable rotationRunnable=new Runnable(){
int-mProgressStatus=0;
@凌驾
公开募捐{
试一试{
if(button.isPressed()){
如果(mProgressStatus<100){
mProgressStatus++;
progress.setProgress(mProgressStatus);
按钮。后延迟(旋转可运行,20);
}否则{
sendMessageToService(“”);
mProgressStatus=0;
Thread.currentThread().interrupt();
}
}否则{
如果(mProgressStatus>0){
程序状态--;
progress.setProgress(mProgressStatus);
按钮。后延迟(旋转可运行,20);
如果(mProgressStatus==0){
Thread.currentThread().interrupt();
}
}
}
}捕获(例外e){
系统输出打印LN(e)
}
}
};
我找到了解决方案。似乎片段中的按钮有一个很小的延迟,所以当我在runnable中询问按钮是否按下时,返回false,因此如果我延迟调用runnable,它返回true。这有点奇怪,但很管用
arg0.postDelay(rotationRunnable, 200);