我这个片段的最终目标是:
- 从按钮调用 Dialog(Interface)。
- 让最终用户选择一个选项(在 5 个选项的列表中)
- 将按钮文本更改为所选选项
目前我有这个:
public void onCreate(Bundle savedInstanceState) {
setLayoutState();
// rest of code omitted
}
然后是设置按钮的 setLayoutState()
public void setLayoutState() {
setContentView(R.layout.main);
Button rate = (Button) findViewById(R.id.ratebutton);
rate.setOnClickListener(onRatePress);
}
所以在这里: setOnClickListener 调用一个单独的函数(为了保持干净,Activity 有很多按钮)
private final View.OnClickListener onRatePress = new View.OnClickListener() {
public void onClick(View v) {
final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
context, R.array.rates, android.R.layout.select_dialog_item );
adapter.setDropDownViewResource(android.R.layout.select_dialog_item);
new AlertDialog.Builder(context).setTitle("Rate this item!")
.setAdapter(adapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Common.makeToast(context,adapter.getItem(which) + "", 3000);
Button rate = (Button) findViewById(R.id.ratebutton);
rate.setText(adapter.getItem(which)+"");
// TODO: user specific action
dialog.dismiss();
}
}).create().show();
}
};
虽然这很好用,但我想知道是否有一种方法可以在不重新声明对话框的 onClick 内的按钮速率的情况下完成此操作
我已经尝试在顶部将按钮声明为最终按钮,但这不会让我在对话框的 onClick 中调用按钮。