@brook
Для обновления данных TextView из Java класса нужно использовать метод setText() класса TextView. Например:
1 2 |
TextView textView = findViewById(R.id.textView); // находим TextView textView.setText("Новый текст"); // устанавливаем новый текст |
Если требуется обновить данные из другого потока, то нужно использовать метод runOnUiThread(), например:
1 2 3 4 5 6 7 |
runOnUiThread(new Runnable() { @Override public void run() { TextView textView = findViewById(R.id.textView); // находим TextView textView.setText("Новый текст"); // устанавливаем новый текст } }); |
Также можно использовать лямбда-выражения (начиная с Java 8):
1 2 3 4 |
runOnUiThread(() -> { TextView textView = findViewById(R.id.textView); // находим TextView textView.setText("Новый текст"); // устанавливаем новый текст }); |
Но если текстовое поле находится в отдельном модуле (фрагменте), то нужно обновлять его из активности, используя интерфейсы.
@brook
Дополню ответ. Если вы работаете с фрагментом и хотите обновить TextView из активности, то можно сделать следующим образом.
1 2 3 |
public interface OnUpdateTextViewListener {
void onUpdateTextView(String newText);
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class MyFragment extends Fragment implements OnUpdateTextViewListener {
private TextView textView;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Инициализация textView
}
@Override
public void onUpdateTextView(String newText) {
textView.setText(newText);
}
}
|
1 2 3 4 |
MyFragment fragment = (MyFragment) getSupportFragmentManager().findFragmentById(R.id.fragmentId);
if (fragment != null) {
fragment.onUpdateTextView("Новый текст");
}
|
Таким образом, вы сможете обновить TextView в вашем фрагменте из активности через интерфейс.