gpt4 book ai didi

java - 无法到达 OnClickListener 函数内的(最终)按钮

转载 作者:行者123 更新时间:2023-12-01 15:24:07 24 4
gpt4 key购买 nike

我这段代码的最终目标是:

  1. 从按钮调用对话框(界面)。
  2. 让最终用户选择一个选项(在 5 个选项的列表中)
  3. 将按钮文本更改为所选选项

目前我有这个:

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 中调用该按钮。

最佳答案

Java 中的变量有一个作用域。它始终在包含其声明的 block (一对大括号 {} )内以及该 block 包含的任何 block 中可用。但不是在外面。

因此,如果您在方法内声明按钮,则无法在此方法之外访问该按钮。您的按钮只能在 drupappSetUploadLayout 内访问。

如果您希望所有方法都可以访问它,则直接将其放在类主体中。这样的变量称为字段,所有方法都可以访问字段。

public class A {
private Button b;

public void foo() {
b=null;
}
}

b 可以通过所有方法访问。

了解更多有关 java 基础知识的信息,在开始使用 android 之前,您应该考虑制作小型 J2SDK 程序。

关于java - 无法到达 OnClickListener 函数内的(最终)按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10432851/

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