Android fragments 按下按钮时更新进度条不会';我不能在碎片中工作

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

此代码在活动中正常工作,但在片段中不能正常工作,因为某些原因,当按钮关闭并进入可运行的问题按钮时。ispressed()返回false。我不明白

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