Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-无法引用非最终变量_Java - Fatal编程技术网

Java-无法引用非最终变量

Java-无法引用非最终变量,java,Java,android的新功能。 我应该编辑什么来消除一个奇怪的“不能引用其他方法中定义的内部类中的非最终变量”按钮 @Override public void onCreate(Bundle SavedInstanceState) { super.onCreate(SavedInstanceState); setContentView(R.layout.activity_main); Button button1 = (Button)findVi

android的新功能。 我应该编辑什么来消除一个奇怪的“不能引用其他方法中定义的内部类中的非最终变量”按钮

@Override
    public void onCreate(Bundle SavedInstanceState) {
        super.onCreate(SavedInstanceState);
        setContentView(R.layout.activity_main);
        Button button1 = (Button)findViewById(R.id.button1);
        Button button2 = (Button)findViewById(R.id.button2);
        //Listeneři
        button1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                button1.setText("ok");
换成这个

 final Button button1 = (Button)findViewById(R.id.button2);
    //Listeneři
    button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            button1.setText("ok");

您可以将按钮变量引用声明为全局..

更改为此

 final Button button1 = (Button)findViewById(R.id.button2);
    //Listeneři
    button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            button1.setText("ok");


您可以将按钮变量引用声明为全局。

您需要将按钮变量设置为“最终”,如下所示

final Button button1 = (Button)findViewById(R.id.button1);
final Button button2 = (Button)findViewById(R.id.button2);

因此,按钮1和按钮2不能重新初始化。

您需要将按钮变量设置为“最终”,如下所示

final Button button1 = (Button)findViewById(R.id.button1);
final Button button2 = (Button)findViewById(R.id.button2);

因此,按钮1和按钮2无法重新初始化。

您所做的是不可能的

在内部类中使用但未声明的任何局部变量、形式参数或异常参数都必须声明为final

在内部类中使用但未声明的任何局部变量必须在内部类主体之前明确赋值(§16)

innerclass
中使用该变量之前,将该变量设置为
final
,以便获得使用该变量的权限

final Button button1 = (Button)findViewById(R.id.button2);

像wise一样,如果您在侦听器中使用剩余的
final

您所做的是不可能的

在内部类中使用但未声明的任何局部变量、形式参数或异常参数都必须声明为final

在内部类中使用但未声明的任何局部变量必须在内部类主体之前明确赋值(§16)

innerclass
中使用该变量之前,将该变量设置为
final
,以便获得使用该变量的权限

final Button button1 = (Button)findViewById(R.id.button2);
像wise一样,如果您在侦听器中使用剩余的
也将其设置为final

试试这个

 @Override
 public void onCreate(Bundle SavedInstanceState) {
    super.onCreate(SavedInstanceState);
    setContentView(R.layout.activity_main);
    Button button1 = (Button)findViewById(R.id.button1);
    Button button2 = (Button)findViewById(R.id.button2);
    //Listeneři
    button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Button button = (Button)v;
            button.setText("ok");
        }
    }
无需将变量设为final…

试试这个

 @Override
 public void onCreate(Bundle SavedInstanceState) {
    super.onCreate(SavedInstanceState);
    setContentView(R.layout.activity_main);
    Button button1 = (Button)findViewById(R.id.button1);
    Button button2 = (Button)findViewById(R.id.button2);
    //Listeneři
    button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Button button = (Button)v;
            button.setText("ok");
        }
    }

无需将变量也设为final…

是否使用Eclipse?如果是,使用快速修复菜单将帮助您解决非final变量和缺少导入语句等问题


在Windows上,将光标放在错误上,然后按Ctrl+1打开快速修复菜单。按enter键(通常)可以满意地解决错误。

是否使用Eclipse?如果是,使用快速修复菜单将帮助您解决非最终变量和缺少导入语句等问题


在Windows上,将光标放在错误上,然后按Ctrl+1打开“快速修复”菜单。按enter键(通常)可以令人满意地解决错误。

U有两种方法解决此问题, 1.改变
Button button1=(按钮)findViewById(R.id.button1);

final Button button1=(按钮)findviewbyd(R.id.button1);

2.在函数外定义按钮1。如下所示:

public class MainActivity extends Activity
{
    Button button1 = (Button)findViewById(R.id.button1);
    Button button2 = (Button)findViewById(R.id.button2);
@Override
public void onCreate(Bundle SavedInstanceState) {
    super.onCreate(SavedInstanceState);
    setContentView(R.layout.activity_main);

    //Listeneři
    button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            button1.setText("ok");

你有两种方法来解决这个问题, 1.改变
Button button1=(按钮)findViewById(R.id.button1);

final Button button1=(按钮)findviewbyd(R.id.button1);

2.在函数外定义按钮1。如下所示:

public class MainActivity extends Activity
{
    Button button1 = (Button)findViewById(R.id.button1);
    Button button2 = (Button)findViewById(R.id.button2);
@Override
public void onCreate(Bundle SavedInstanceState) {
    super.onCreate(SavedInstanceState);
    setContentView(R.layout.activity_main);

    //Listeneři
    button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            button1.setText("ok");

将button1声明为
final
。你是否尝试过用谷歌搜索错误的含义?这不是android特有的问题,而是Java相关的问题。将button1声明为
final
。你是否尝试过用谷歌搜索错误的含义?这不是android特有的问题,而是Java相关的问题。为什么
button2
应该是final?我们需要做出一个解释在我们将侦听器附加到ny引用之前,ny引用为最终引用。因此,它将确保在设置侦听器后不会发生更改假设button2也将附加到侦听器。太棒了。我遇到另一个错误,tho:onclicklistener无法解析为类型?@user2890391您只需导入即可。为什么
button2
应该是nal?在我们将侦听器附加到它们之前,我们需要将任何引用作为最终引用。这样,它将确保在设置侦听器后不会发生任何更改假定button2也将附加到侦听器。太棒了。我遇到另一个错误,tho:onclicklistener无法解析为类型?@user2890391您只需导入即可。肯定会l在创建活动时(即调用onCreate之前)尝试查找按钮,但在调用setContentView之前按钮不存在…?当然,这将在创建活动时(即调用onCreate之前)尝试查找按钮,但在调用setContentView之前按钮不存在。。。?