Может ли кто-нибудь объяснить лучший способ достижения следующего, я думаю, что это довольно простой вопрос, но я хотел бы знать лучший способ, так как его можно достичь несколькими различными способами.
Допустим, яхотел класс, который обновил текст TextView до «Test».Конечно, это не моя настоящая проблема, но я пытаюсь сделать этот вопрос максимально простым.Допустим также, что это примет любое текстовое представление.
Класс, который он вызывает, не наследует Activity.
Я вижу следующие способы сделать это, пожалуйста, объясните, почему и почему нет этих методовследует или не следует использовать.
Передайте TextView в качестве ссылки и обновите текст.
public class Test
public void updateText(TextView tv)
{
tv.setText("Test");
}
Другой вариант - передать действие и вызвать findViewById
, нопроблема здесь в том, что если идентификатор не совпадает с ожидаемым классом Test, представление вернет ноль и не обновит TextView.
public class Test
public void updateText(Activity act)
{
TextView tv = (TextView) act.findViewById(R.id.i_must_exist);
tv.setText("Test");
}
Другим выбором будет использование getters / setters.
public class Test
private TextView mTvToUpdate;
public void setTextView(TextView tv)
{
mTvToUpdate = tv;
}
public void updateText(Activity act)
{
mTvToUpdate.setText("Test");
}
Полагаю, реальный вопрос в том, что неправильно передавать ссылку на объект в качестве параметра. Является ли Activity предпочтительным способом?Зачем?Это более вероятно, чтобы испытать утечки памяти, оба решения в порядке?Это до предпочтения?
Пожалуйста, не отвечайте: «Почему вы хотите это сделать?»как и в этом примере, я, очевидно, не хотел бы делать то, что я спрашиваю, но вопрос, стоящий за ним, по-прежнему применим.
Заранее спасибо.