У меня есть два класса, один класс MainActivity
, а другой собственный класс. Мой активити класс содержит textView
. Как я могу изменить текст textView
из своего класса?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView t = findViewById(R.id.textView);
t.setText("Текст");
}
}
class Helper
{
public void run()
{
TextView text = findViewById(R.id.textView2);
text.setText("Второй текст");
}
}
Исходя из ответов, я решил дописать код с некоторыми правками. Теперь создается объект класса Helper
, который принимает текущее активити. При этом класс Helper
наследуется от класса TimerTask
, который уже не содержит в себе метода findViewById
и соответственно выдает ошибку 'Cannot resolve method'
. Как можно обойти этот момент?
При попытке передачи активити в класс Helper
, код выполняется, но приложение моментально вылетает при попытке записать текст в поле textView2
.
Пример обновленного кода:
public class MainActivity extends AppCompatActivity {
public TextView t;
public TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
t = findViewById(R.id.textView);
t.setText("Текст");
Timer timer = new Timer();
TimerTask task = new Helper(MainActivity.this);
timer.schedule(task, 2000, 5000);
}
}
class Helper extends TimerTask
{
private MainActivity activity;
public Helper(MainActivity activity){
this.activity = activity;
}
public static int i = 0;
public void run()
{
TextView text = findViewById(R.id.textView2);
text.setText("Второй текст" + ++i);
}
}
Самый простой вариант - во время создания Helper отдавать ему вашу активити или сразу TextView. Не забывайте учитывать что при пересоздании активити(например, поворот экрана) и активити, и textView надо указывать новые
public class MainActivity extends AppCompatActivity {
public TextView t, textView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
t = findViewById(R.id.textView);
t.setText("Текст");
textView2 = findViewById(R.id.textView2);
}
}
class Helper
{
private MainActivity activity;
public Helper(MainActivity activity){
this.activity = activity;
}
public void run()
{
TextView text = activity.textView2;
text.setText("Второй текст");
}
}
Может быть так ?
class Helper {
public void run() {
MainActivity.text.setText("Второй текст");
}
}
Но возможно придётся добавить видимость для "text".
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть такая процедура, она работает из консоли, когда я ввожу call products_count(null) - она работает
У меня есть два слушателя BroadcastReceiverSms и BroadcastReceiverCall которые отслеживают когда на телефон ЗВОНЯТ и приходит СМС и выводят оповещение с вибрациейКогда...
интересует красивый способ преобразования двумерного массива строк в мапу, значениями которой будет мапа, значениями которой будет список...
Добрый день не могу разобраться с кодом почему к переменной in добавляют 1