gpt4 book ai didi

java - Android 编程 - 使用警告对话框以编程方式更改按钮文本

转载 作者:行者123 更新时间:2023-11-30 02:00:38 26 4
gpt4 key购买 nike

我正在尝试创建一个用于编辑吉他谱的应用程序。我有一组代表音品的按钮,我希望能够单击按钮打开一个警告对话框,将该按钮的文本设置为输入的数字。

下面的 editFret 函数由按钮通过其 onClick 属性调用。当我运行它时,我可以按下一个按钮,它会弹出对话框,我可以输入数字。在对话框中按 OK 后,按钮变为空白。当我再次单击该按钮或任何其他按钮时,该数字将显示为按钮中的文本。它还会不断将之后单击的任何按钮中的文本更改为最后一个输入值。

我尝试在单击时将按钮文本更改为常量值,但没有遇到任何问题,所以我假设问题出在 getFret 函数上,尽管我无法看到它会是什么,因为它只是在获取一个字符串。

//Create string to store the fret number
String fret;

public void getFret(){
//Create text input field
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
input.setFilters(new InputFilter[] {new InputFilter.LengthFilter(2)});

new AlertDialog.Builder(this)
.setTitle("Edit fret")
.setMessage("Input fret number")
.setView(input)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
fret = input.getText().toString();
}
})
.setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Do nothing
}
}).show();
}

public void editFret(View view){
Button button = (Button) view;
getFret();
button.setText(fret);
button.invalidate(); //Don't know if this is necessary
}

最佳答案

您需要将 setPositiveButton 更改为:

.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
fret = input.getText().toString();
button.setText(fret);
}
})

并将 Button 更改为全局变量而不是局部变量。

这里的问题是,当您调用 editFret(View view) 时,它还会调用 getFret() 来显示对话框,然后调用 button.setText(fret) 而无需等待用户按下 OK 或 Cancel,因此您需要在调用 OnClickListener 时设置文本。

关于java - Android 编程 - 使用警告对话框以编程方式更改按钮文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31553030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com