TextView не устанавливает текст внутри макета включения - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть собственный диалог, в который я включаю другой макет.В этом макете есть 3 кнопки и TextView, ни одна из них не является нулевой.Если я нажимаю на кнопки, они работают правильно.Но TextView не показывает текст.Текст должен появиться, когда я нажму другую кнопку.Вот как это должно работать

Настраиваемый макет диалога:

<LinearLayout 
   ............

.....
<androidx.cardview.widget.CardView
        android:id="@+id/result_card"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        card_view:cardElevation="2dp"
        card_view:cardMaxElevation="2dp"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginBottom="8dp"
        android:visibility="gone"
        app:cardCornerRadius="8dp">

    <include android:id="@+id/result_layout" layout="@layout/result_block" />

    </androidx.cardview.widget.CardView>

....
....
</LinearLayout>

Макет result_block

<?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:padding="16dp"
    android:background="@color/colorPrimary"
    android:orientation="vertical">

    <TextView
        android:id="@+id/result_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="17dp"
        android:text=""
        android:textColor="@color/colorWhite"
        android:fontFamily="sans-serif-medium"
        android:padding="8dp"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="end"
        android:orientation="horizontal">
        <ImageButton
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_copy_24px_outlined"
            android:layout_marginEnd="16dp"
            android:tint="@color/colorWhite"
            android:background="?attr/selectableItemBackgroundBorderless"
            />

        <ImageButton
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="16dp"
            android:tint="@color/colorWhite"
            android:src="@drawable/ic_share_24px_outlined"
            android:background="?attr/selectableItemBackgroundBorderless"
            />

        <ImageButton
            android:id="@+id/btn3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tint="@color/colorWhite"
            android:src="@drawable/ic_volume_up_24px_outlined"
            android:background="?attr/selectableItemBackgroundBorderless"
            />
    </LinearLayout>

</LinearLayout>

А теперь диалог

private void showDiag() {
        final View dialogView = View.inflate(getActivity(), R.layout.custom_dialog_layout,null);
        final View resultLayout = View.inflate(getActivity(), R.layout.result_block,null);
        final Dialog dialog = new Dialog(getActivity(), R.style.MyAlertDialogStyle);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(dialogView);

        final TextView resultTxt = resultLayout.findViewById(R.id.result_txt);
        final ImageButton btn1 = resultLayout.findViewById(R.id.btn1);
        final CardView resultCardView = dialog.findViewById(R.id.result_card_view);
        final TextInputEditText editText = dialog.findViewById(R.id.text_edit);
        final ImageButton clearText = dialog.findViewById(R.id.clear_text);
        MaterialButton resultConfirm = dialog.findViewById(R.id.result_confirm);
        ImageButton btn2 = dialogView.findViewById(R.id.copy_btn);
        ImageButton btn3 = dialogView.findViewById(R.id.share_btn);

        resultConfirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!editText.getText().toString().equals("")) {
                    String theWord = editText.getText().toString();
                    String result = Utils.getSecondWord(theWord);
                    // result it shows me the correct string with no errors or something else
                    resultTxt.setText(result); // doesn't work. Not set the text
                    insertWord(theWord, result);
                    resultCardView.setVisibility(View.VISIBLE);
                    resultCardView.setVisibility(View.VISIBLE);
                } else {
                    Toast.makeText(getActivity(), "Error", Toast.LENGTH_SHORT).show();
                }
            }
        });

        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.i(TAG, "result: " + resultTxt.getText().toString());
            }
        });

        // Share btn
        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               Log.i(TAG, "result: " + resultTxt.getText().toString());
            }
        });

        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               Log.i(TAG, "result: " + resultTxt.getText().toString());
            }
        });

        dialog.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface dialogInterface) {
                Utils.revealShow(dialogView, true, null, resultConfirm);
            }
        });

        dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
            @Override
            public boolean onKey(DialogInterface dialogInterface, int i, KeyEvent keyEvent) {
                if (i == KeyEvent.KEYCODE_BACK){
                    Utils.revealShow(dialogView, false, dialog, resultConfirm);
                    return true;
                }
                return false;
            }
        });
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        dialog.show();
    }

Все в диалоге работает правильно, но TextView нет.Даже если я попытаюсь написать что-то еще, например resultTxt.setText("Hello there");, текст не появится.Есть предложения?

1 Ответ

0 голосов
/ 19 сентября 2019

Пожалуйста, удалите android:text="" в TextView, потому что textview - получить текст по умолчанию, пустой или вы пишете что-нибудь в TextView, как android:text="abc"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...