我正在制作一个应用程序,其中我有一个需要标记为已完成的请求列表以及请求中的项目的另一个列表。如果我选择一个请求,其中的项目将显示在项目列表和按钮中,并显示要对这些项目执行的操作。但是当我选择另一个请求并按下按钮时,按钮上的文本将被清除。我在项目中使用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
编辑:这是两个按钮的代码
付款按钮:
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();
首先,我已在右侧选择了一个项目,然后点击付费。接下来,我在右侧选择了另一个项目,然后点击付费。然后我在对话框上单击取消。最后,我点击了更新按钮。