Изменить любую кнопку на Android, когда пользователь длительное нажатие - PullRequest
0 голосов
/ 28 июня 2019

У меня есть кнопка, скажем, btnA1, btnA2, btnA3, и я хочу, чтобы пользователь мог менять текст кнопки при длительном нажатии. Когда пользователь долго нажимает на любую кнопку, он дает диалог для пользователя, чтобы заполнить текст кнопки и некоторый textView. Вот мой код:

btnA1.setOnLongClickListener(new Button.OnLongClickListener() {
  @Override
  public boolean onLongClick(View v) {
    dialogForm();
    return true;
  }
});

Вот функция dialogForm:

private void dialogForm(){
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();

    dialog.dismiss();
  }
});

dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
    dialog.dismiss();
  }
});
dialog.show();
}

Как я могу определить, какая кнопка была нажата, поэтому перед диалогом dismiss () изменится только эта кнопка;

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

по словам г-на Сибина Дэвиса в сочетании с г-ном Караном Сандху, вот окончательный код

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();
}

Спасибо всем

0 голосов
/ 28 июня 2019

Попробуйте присвоить идентификаторы вашим кнопкам, чтобы, когда пользователь выбирает кнопку и вводит текст, в диалоговом окне вы можете установить этот текст для этой конкретной кнопки и отклонить ее. Затем в наборе текст кнопки

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).

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