我有一個例程,我用它來設置文本視圖。它對名稱進行一些名義處理,填充空白等。另外,它使用View.Post在UI線程上運行。以下是所述功能的相關部分:爲什麼我的值沒有保存到Runnable中?
public void setValue(final String value)
{
Log.v(TAG,"Name="+ mFieldName.getText()+" value="+value);
//Log.v(TAG,unknown);
mValue.post(new Runnable(){
@Override
public void run() {
Log.v(TAG,"Start: Name="+ mFieldName.getText()+" value="+value);
if (value==null)
mValue.setText(R.string.loading);
else
mValue.setText(value);
Log.v(TAG,"Posted: Name="+ mFieldName.getText()+" value="+mValue.getText());
}
});
mValue和mFieldName是在其他位置指定的TextView。注意3個日誌語句。這裏有3種名稱精度:
10-27 22:27:49.491: V/OOP(19865): Name=Accuracy value=25.0 m
10-27 22:27:50.171: V/OOP(19865): Start: Name=Accuracy value=null
10-27 22:27:50.171: V/OOP(19865): Posted: Name=Accuracy value=Finding...
我有一個非常困難的時期如何理解價值可能已經創造了可運行的過程中發生任何變化。有什麼想法嗎?
我認爲,如果你調用的方法,在日誌可以'setValue'不止一次(連續地,例如在一個循環中)。你做那個? –
這很奇怪。我只能想象如果你有自己的具有'value'作爲實例變量的'Runnable'類,就會發生這種情況 - 靜態抽象類Runnable implements java.lang.Runnable {String value; }'。你能檢查進口嗎? ' –
這很奇怪。你在代碼的其他任何地方(即全局變量)中使用「value」這個名字嗎? – Luis