Android 视图可以';不能在片段更改后更新

Android 视图可以';不能在片段更改后更新,android,android-fragments,Android,Android Fragments,我有两个片段,其中一个我正在尝试在一些数据更新之后更新一些视图。当我有这些视图时,当我保持在片段中时,我的视图会很好地更新。在更改为另一个片段后,我的线程继续正常工作。 但是在我返回第一个片段后,我的视图无法更新 myThread = new Thread(){ @Override public synchronized void run(){ while( true ){ try {

我有两个片段,其中一个我正在尝试在一些数据更新之后更新一些视图。当我有这些视图时,当我保持在片段中时,我的视图会很好地更新。在更改为另一个片段后,我的线程继续正常工作。 但是在我返回第一个片段后,我的视图无法更新

myThread = new Thread(){
        @Override
        public synchronized void run(){
            while( true ){
                try {
                    sleep( 2000 );
                    myActivity.runOnUiThread( new Runnable(){
                        @Override
                        public void run(){
                            updateViews();
                        }
                    });

                } catch ( InterruptedException e ) {
                    e.printStackTrace();
                }
            }
        }
    };
这是更新功能:

private void updateViews(){
    textView.setText( _chronometerService.getTime() );
}

请注意,我的线程会继续更新数据,我的问题是为什么视图无法更新。

也许您在切换时创建了一个新片段?

为什么要使用这样的线程?@Stefan只是为了更新我的视图。还有其他方法吗?例如:@Stefan AsyncTask用于短操作。我认为处理程序不适合这种情况,因为如果我换成另一个片段,我就无法持续更新数据。正如我之前所说的,我不明白。在您的案例中,是否不可避免地要创建一个新的片段对象?不可能保留同一个对象,而只使用事务隐藏它吗?我对每个片段使用FragmentTransaction.replace.commit。当我按下按钮时,它们会改变。不是我当时想的那样。
myThread = new Thread(){
        @Override
        public synchronized void run(){
            while( true ){
                try {
                    sleep( 2000 );
                    myActivity.runOnUiThread( new Runnable(){
                        @Override
                        public void run(){
                            updateViews();
                        }
                    });

                } catch ( InterruptedException e ) {
                    e.printStackTrace();
                }
            }
        }
    };