Я просмотрел почти все сообщения в стеке, но не нашел ничего подобного моей проблеме. У меня есть fragment
в viewpager
, и в этом фрагменте есть класс, давайте назовем его customClass
. Я начинаю деятельность с fragment
, которая возвращает значение в onActivityResult фрагмента. Внутри я вызываю метод customClass, который обновляет textView
с данными, полученными из пакета onActivityResault
.TextView не обновляется ТЕКСТ
Фрагмент
public class clock_fragment extends Fragment {
customClass myClass;
public clock_fragment() {
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_clock, container, false);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.menu_settings) {
Intent intent = new Intent(getActivity(), SettingsActivity.class);
startActivityForResult(intent, 0);
}
return super.onOptionsItemSelected(item);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
myClass = new customClass();
myClass.initializeValues(this, view);
}
@Override
public void onActivityResult(int requestCode, int resultCode, final Intent data) {
if (resultCode != RESULT_CANCELED) {
myClass.updateTextView(data.getStringExtra("currency", "fail"));
}
}
}
customClass
public class myClass {
final String TAG = "TAG";
Fragment fragment;
TextView textView;
public myClass() {
}
public void initializeValues(clock_fragment f, View view) {
fragment = f;
textView = (TextView) view.findViewById(R.id.textView);
}
public void updateTextView(String value) {
textView.setText(value);
//i can change its colour
textView.setTextColor(fragment.getActivity().getResources().getColor(R.color.yellow));
//i can print out its updated value, not the one being shown on the screen
Log.e(TAG, "updateCurrencyFromPreferences: "+textView.getText());
}
}
Все методы называют хорошо, все выполняет. Я могу даже распечатать значение string
в журнале, и он дает мне желаемый результат во всех методах. Текстовый вид текст ИЗМЕНЕНИЕ, подтвержденный с помощью textView.getText()
и печать его в сообщении журнала, которое я положил в конце updateTextView(String value)
.
BUT textView
не обновляет текст! Я пробовал так много всего. Я подумал, что это может иметь отношение к фрагменту, который не имеет такой же ссылки textView
, потому что его воссоздают после того, как я запустил activity
, а затем вернусь назад.
Я могу даже изменить textColour
метода textView
(в методе updateTextView
), и это также работает нормально, я вижу, что это происходит, хотя текст не меняется. Я также попытался изменить текст на какой-то случайный фиктивный текст, но не повезло. Как я уже сказал, печать журнала messege с textView.getText()
показывает обновленный текст в журнале, но он не совпадает с тем, что на экране (текст не меняется). Я даже пробовал передать textView
от основного фрагмента к этому конкретному методу, но, увы, не повезло. PLS help: 'D
PS: Пользовательский класс уже имеет ссылку на textView
, который создается из представления, переданного в конструктор. ВСЕ работает, нет ошибок или проблем с присвоением, только текст не обновление.
Буду рад предоставить дополнительную информацию, если этого недостаточно.
Похоже, что 'customClass' имеет ссылку на другой' TextView', чем тот, который фактически отображается в 'Activity'. Пожалуйста, показать больше этого класса. В частности, как «textView» объявлен и инициализирован? Как создается и инициализируется переменная 'customClass' в вашей деятельности? –
Это может быть частью проблемы. если это так, то почему я могу изменить цвет? и даже получить его обновленный текст? Я отредактирую свой вопрос, чтобы дать вам больше информации –
Как вы меняете цвет? Пожалуйста, покажите больше кода. –