У меня есть обычная программа, которую я использую для установки текстовых представлений. Он выполняет некоторую номинальную обработку имен, заполнение пробелов и т. Д. Кроме того, он работает в потоке пользовательского интерфейса, используя View.Post. Вот соответствующие части указанной функции:Почему моя ценность не сохраняется в 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 является TextViews, указанным в других местах. Обратите внимание на 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' более чем один раз (последовательно, например, в петле). Вы это делаете? –
Это странно. Я могу только представить, что это происходит, если у вас есть свой собственный класс Runnable, который имеет значение 'value' как переменную экземпляра -' static abstract class Runnable реализует java.lang.Runnable {String value; } '. Можете ли вы проверить импорт? ' –
Это странно. Используете ли вы имя «значение» где-либо еще в своем коде (т. Е. В глобальной переменной)? – Luis