Как изменить значение TextView в другом XML-файле из основного действия?

#java #android #xml

#java #Android #xml

Вопрос:

У меня есть XML-файл с текстовым представлением, и я хочу изменить его серьезность из основного действия.
Я использовал этот код в основном действии:

 // I just coppied the related codes 

TextView tvValue;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tvValue = findViewById(R.id.tv_value); 

    // the tv_value id is from the (word_item.xml) file

}

private void OnClickFunc(View view) {
    tvValue.setGravity(Gravity.RIGHT);
}
  

и проблема в том, что я получаю ошибку NullPointerException при нулевой ссылке на объект.
Я знаю, что я должен каким-то образом связать XML-файл с основным действием.

word_item.xml файл:

 <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp">

  <TextView
    android:id="@ id/tv_value"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Word" />

</LinearLayout>
  

Спасибо, и я ценю вашу помощь.

Комментарии:

1. опубликуйте свой метод создания, в котором вы устанавливаете представление содержимого ie. setContentView(R.layout.activity_main);

2. Я только что отредактировал вопрос, пожалуйста, проверьте еще раз. Спасибо.

3. покажите свой activity_main.xml файл

Ответ №1:

если вы не включили word_item.xml в свой activity_main.xml , ошибка очевидна

итак, вот как вы можете включить другой файл в любой XML-файл в Android

 <include layout="@layout/word_item.xml" />
  

тогда все будет работать так, как вы ожидаете

Ответ №2:

Попробуйте сначала раздуть другой макет следующим образом инициализируйте представление

LayoutInflater inflater = LayoutInflater.from(MainActivity.this); final View v = inflater.inflate(R.layout.word_item, null);

Затем

Textview tvValue = findViewById(R.id.tv_value); private void OnClickFunc() { tvValue.setGravity(Gravity.RIGHT);

Ответ №3:

Где вы инициализировали переменную TextView?? Переменная должна быть инициализирована после setContentView в методе onCreate в Activity.