1

Я пытаюсь setText для текстовых просмотров в фрагменте, который содержится в действии. Когда я устанавливаю текст с помощью метода setText, я вижу, что переменной класса mText в текстовом представлении присваивается это значение. Однако в конце пользовательского интерфейса я не вижу текст, заданный кодом.TextView setText не работает

У меня есть вид деятельности как это.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/meaningcontainer" 
      tools:context="com.xyz.MeaningActivity" 
      tools:ignore="MergeRootFrame" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
> 


<TextView 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_below="@+id/meaning_toolbar" 
    android:id="@+id/word_selected" 
    android:textSize="@dimen/abc_text_size_title_material_toolbar" 
    /> 

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/word_selected" 
    android:id="@+id/word_meanings" 
    > 

    <fragment 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/frag_meaning" 
     android:name="com.xyz.ui.MeaningActivity$MeaningFragment" 
     tools:layout="@layout/fragment_meaning" 
     /> 

</FrameLayout> 

Соответствующий фрагмент, который включен в этой схеме имеет следующий вид:

<ScrollView xmlns:tools="http://schemas.android.com/tools" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     tools:context=".ui.MeaningActivity$MeaningFragment" 
> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    > 

    <android.support.v7.widget.CardView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:elevation="@dimen/cardview_default_elevation" 
     > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      > 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="16dp" 
       android:id="@+id/postype_noun" 
       android:textAlignment="textStart" 
       android:textSize="@dimen/abc_text_size_title_material_toolbar" 
       android:layout_marginStart="@dimen/activity_horizontal_margin" 
       /> 

     </LinearLayout> 

    </android.support.v7.widget.CardView> 


</RelativeLayout> 

В деятельности OnCreate метод я стараюсь SetText. Вот код, который:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_meaning); 

    if (savedInstanceState == null) { 
     Fragment fragment = new MeaningFragment(); 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.word_meanings, fragment).commit(); 
    } 
    Fragment fragment = getSupportFragmentManager(). 
          findFragmentById(R.id.frag_meaning); 
    View frag_view = fragment.getView(); 
    TextView postextView = (TextView) frag_view.  
            findViewById(R.id.postype_noun); 
    postextView.setText("test"); 

} 

TextView postextView не равно нулю и получить присваивается значение теста. Но в конце пользовательского интерфейса я не вижу никакой тестовой строки.

+1

Попробуйте вместо этого использовать TextView. – natario

+1

Почему вы пытаетесь использовать внутренний класс ('android.support.v7.internal.widget.CompatTextView') в своих собственных макетах? – CommonsWare

+1

@CommonsWare У меня первоначально был только текст. Поскольку у меня была та же проблема, я играл с другими классами. По вашему предложению вернемся к тексту. Все еще не работает. обновляя вопрос с помощью класса textvew. –

ответ

0

Попробуйте удалить макет карты из макета вашей деятельности.

1

Пожалуйста, удалите следующие строки из OnCreate метода вашей деятельности по:

if (savedInstanceState == null) { 
    Fragment fragment = new MeaningFragment(); 
    getSupportFragmentManager().beginTransaction() 
      .add(R.id.word_meanings, fragment).commit(); 
} 

Там нет необходимости делать это, потому что ваш фрагмент уже экземпляр через XML в макете деятельности.

Смежные вопросы