我有一些按钮,例如btnA1,btnA2,btnA3,我希望用户可以在长按时更改按钮文本。当用户长按任意按钮时,会弹出对话框以供用户填充按钮文本和一些textView。这是我的代码:
com.android.support:design
这是dialogForm函数:
btnA1.setOnLongClickListener(new Button.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
dialogForm();
return true;
}
});
我如何才能检测到按下了哪个按钮,所以在对话框dismiss()之前,只有那个按钮会改变;
答案 0 :(得分:0)
尝试给按钮赋予id,这样,当用户选择一个按钮并键入文本时,便可以在对话框中将该文本设置为该特定按钮,然后将其关闭。然后在设置按钮文本中
dialog.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
macroName = txtMacroName.getText().toString();
macroStatus = txtMacroStatus.getText().toString();
dialog.dismiss();
}
});
在setPositivebutton方法中,只需获取edittext的值(即getText()。toString),然后将其设置为btn.setText(edittext的值)之类的按钮。
答案 1 :(得分:0)
根据Sibin Davis先生和Karan Sandhu先生的结合,这是最终代码
btnA1.setOnLongClickListener(new Button.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(getApplicationContext(),ttlA1,Toast.LENGTH_SHORT).show();
dialogForm(btnA1); // <---- add this
return true;
}
});
和函数dialogForm():
private void dialogForm(final Button b1){ //<-- add this
dialog = new AlertDialog.Builder(MainActivity.this);
inflater = getLayoutInflater();
dialogView = inflater.inflate(R.layout.macro_form, null);
dialog.setView(dialogView);
dialog.setCancelable(true);
dialog.setIcon(R.mipmap.ic_launcher);
dialog.setTitle("Macro Form");
txtMacroName = (EditText) dialogView.findViewById(R.id.txtMacroName);
txtMacroStatus = (EditText) dialogView.findViewById(R.id.txtMacroValue);
dialog.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
macroName = txtMacroName.getText().toString();
macroStatus = txtMacroStatus.getText().toString();
b1.setText(macroName); // <---- add this
dialog.dismiss();
}
});
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialog.show();
}
谢谢