当我按下按钮时,按钮文本会被清除

时间:2018-01-29 03:22:00

标签: android button sdk

我正在制作一个应用程序,其中我有一个需要标记为已完成的请求列表以及请求中的项目的另一个列表。如果我选择一个请求,其中的项目将显示在项目列表和按钮中,并显示要对这些项目执行的操作。但是当我选择另一个请求并按下按钮时,按钮上的文本将被清除。我在项目中使用sdk 26。在我试图查看按钮的文本值是否仍然存在之后,似乎文本没有显示但文本值仍然存在。

编辑: 这是我初始化视图的部分。

btnCustomerInfo = findViewById(R.id.btnCustomerInfo);
btnRemoveDiscount = findViewById(R.id.btnRemoveDiscount);
btnClear = findViewById(R.id.btnClear);
btnPay = findViewById(R.id.btnPay);
btnPrintBill = findViewById(R.id.btnPrintBill);
btnUpdate = findViewById(R.id.btnUpdate);

编辑: 这是相关的xml代码。

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

   <Button
      android:id="@+id/btnCustomerInfo"
      style="@style/AppTheme.Button"
      android:layout_width="120dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="Customer Info" />

   <Button
      android:id="@+id/btnRemoveDiscount"
      style="@style/AppTheme.Button"
      android:layout_width="120dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="Remove Discount" />

   <Button
      android:id="@+id/btnClear"
      style="@style/AppTheme.Button"
      android:layout_width="120dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="Clear" />

   <Button
      android:id="@+id/btnPay"
      style="@style/AppTheme.Button"
      android:layout_width="120dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="Pay" />
</TableRow>

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

   <Button
      android:id="@+id/btnPrintBill"
      style="@style/AppTheme.Button"
      android:layout_width="120dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="Print Bill" />

   <Button
      android:id="@+id/btnTransfer"
      style="@style/AppTheme.Button"
      android:layout_width="120dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="Transfer" />

   <Button
      android:id="@+id/btnMerge"
      style="@style/AppTheme.Button"
      android:layout_width="120dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="Merge" />

   <Button
      android:id="@+id/btnUpdate"
      style="@style/AppTheme.Button"
      android:layout_width="120dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="Update" />
</TableRow>
编辑:这是我的AppTheme.Button

<style name="AppTheme.Button" parent="AppTheme">
        <item name="colorAccent">#ebebea</item>
        <item name="android:textColor">@color/black</item>
    </style>

我没有在onClick中设置任何按钮值

编辑:按钮onClicks

btnCustomerInfo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d(TAG, "btnTxt: "+((Button) view).getText());
                showCustomerInfoDlg(ip);
            }
        });

btnRemoveDiscount.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    MaterialDialog.Builder mDlgBuild = new MaterialDialog.Builder(ctx);
            mDlgBuild.title("Discount");
            mDlgBuild.content("Remove discount on " + acOr.getTableName() + " " + acOr.getTableNum() + "(" + acOr.getSessionBundle() + ")" + "?");
            mDlgBuild.cancelable(false);
            mDlgBuild.positiveText("Ok");
            mDlgBuild.negativeText("Cancel");
            mDlgBuild.onPositive(new MaterialDialog.SingleButtonCallback() {
                @Override
                public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                    dialog.dismiss();
                    Progress_dialog("Removing discount ...");
                    progressDlg.show();
                }
            });
            mDlgBuild.onNegative(new MaterialDialog.SingleButtonCallback() {
                @Override
                public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                    dialog.dismiss();
                }
            });

            mDlgBuild.show();
                }
            });

for btnTransfer:

final MaterialDialog mDlg = new MaterialDialog.Builder(MainActivity.this)
                    .customView(R.layout.dlg_transfer_table,true)
                    .cancelable(false)
                    .negativeText("Cancel")
                    .onNegative(new MaterialDialog.SingleButtonCallback() {
                        @Override
                        public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                            dialog.dismiss();
                        }
                    }).show();

            TextView lblTableNum = (TextView)mDlg.findViewById(R.id.lblDlgTransferTableNumber);
            TextView lblCustomerName = (TextView)mDlg.findViewById(R.id.lblDlgTransferCustomerName);
            RecyclerView lstTable = (RecyclerView)mDlg.findViewById(R.id.lstDlgTransferTableList);

其他按钮执行打印,打开webview,删除列表中的项目以查找请求中的项目,并显示另一个按钮。即使按钮仍然没有代码,单击它仍然会删除按钮显示上的文本。

编辑:Gif

enter image description here

编辑:这是两个按钮的代码

付款按钮:

final MaterialDialog mDlg = new MaterialDialog.Builder(MainActivity.this)
                    .title("Payment Options")
                    .customView(R.layout.dlg_pay_option,true)
                    .cancelable(false).show();

            Button btnCash = (Button)mDlg.findViewById(R.id.btnDlgPayOptionCash);
            Button btnCard = (Button)mDlg.findViewById(R.id.btnDlgPayOptionCard);
            Button btnOther = (Button)mDlg.findViewById(R.id.btnDlgPayOptionOther);
            Button btnCancel = (Button)mDlg.findViewById(R.id.btnDlgPayOptionCancel);
            Button btnRemovePayment = (Button)mDlg.findViewById(R.id.btnDlgPayOptionRemovePayment);

            btnCancel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mDlg.dismiss();
                }
            });

            btnCash.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mDlg.dismiss();
                    typeOfPayment = "cash";
                    CashPayment();
                }
            });

            btnCard.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mDlg.dismiss();
                    typeOfPayment = "card";
                    CardPayment();
                }
            });

            btnOther.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mDlg.dismiss();
                    typeOfPayment = "other";
                    OtherPayment();
                }
            });

更新按钮:

Intent i = new Intent(MainActivity.this, UpdateOrder.class);
            i.putExtra("or_id", acOr.getSessionBundle());
            i.putExtra("cust_name", acOr.getCustomerName());
            i.putExtra("table_num", acOr.getTableNum());
            startActivity(i);
            finish();

首先,我已在右侧选择了一个项目,然后点击付费。接下来,我在右侧选择了另一个项目,然后点击付费。然后我在对话框上单击取消。最后,我点击了更新按钮。

1 个答案:

答案 0 :(得分:1)

很有可能文本未被清除但背景颜色处于某种状态。要处理它,您可以创建color state list并将其设置在android:textColor属性中。