TextView没有在包含布局中设置setText

时间:2019-09-19 08:44:06

标签: java android string android-layout textview

我有一个自定义对话框,其中包含其他布局。在此布局中,有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 :(得分:0)

请删除TextView中的android:text="",因为textview是默认文本为空,或者您在TextView中写了任何内容,例如android:text="abc"