@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 в вашем фрагменте из активности через интерфейс.