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