TextView setText не работает

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

У меня есть такой макет активности.

<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>

The corresponding fragment that is included in this layout is following:

<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>

In the activity onCreate method I try to setText. Here is the code for that:

@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 не является нулевым, и ему присваивается значение test. Но в конце пользовательского интерфейса я не вижу тестовой строки.


person Nayanjyoti Deka    schedule 29.03.2015    source источник
comment
Вместо этого попробуйте использовать TextView.   -  person natario    schedule 29.03.2015
comment
Почему вы пытаетесь использовать внутренний класс (android.support.v7.internal.widget.CompatTextView) в своих макетах?   -  person CommonsWare    schedule 29.03.2015
comment
@CommonsWare Изначально у меня был только текстовый просмотр. Поскольку у меня была такая же проблема, я играл с другими классами. По вашему предложению вернулся к текстовому просмотру. До сих пор не работает. обновление вопроса с помощью класса textvew.   -  person Nayanjyoti Deka    schedule 29.03.2015
comment
Используйте представление иерархии или uiautomatorviewer, чтобы определить, виден ли ваш TextView и т. д.   -  person CommonsWare    schedule 29.03.2015
comment
@Nayanjyoti попробуйте удалить макет карты   -  person shridutt kothari    schedule 29.03.2015


Ответы (2)


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

person shridutt kothari    schedule 03.04.2015

Удалите следующие строки из метода onCreate вашей активности:

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

В этом нет необходимости, потому что ваш фрагмент уже создан с помощью XML в макете вашей активности.

person questioner    schedule 29.03.2015