【问题标题】:Java Variable Scope GlobalJava 变量范围全局
【发布时间】:2017-02-17 12:04:00
【问题描述】:

我试图用简单的例子来理解变量范围。 我需要有关此代码的帮助

package com.varialescope.examplevariablescope;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private Button buttonOne;
private Button buttonTwo;
private String mText = "Hello World";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //Initialialize UI elements

    buttonOne = (Button) findViewById(R.id.button_one);
    buttonOne = (Button) findViewById(R.id.button_two);

    //Button One click listener

    buttonOne.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //Set new text

            mText = "ONE";

            Toast.makeText(MainActivity.this, mText,      Toast.LENGTH_SHORT).show();
        }
    });

    //Button Two click listener

    buttonTwo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Toast.makeText(MainActivity.this, mText, Toast.LENGTH_SHORT).show();
        }
    });
}
}

如何从点击监听器方法访问 mText 字符串?

如何为 mText 单击按钮 One 设置一个新字符串并使其可全局访问?

感谢帮助

【问题讨论】:

  • 有什么问题?你不是从OnClickListener 中访问过mText 吗?
  • 您已经在访问mtext,但如果您想明确表达,请像这样:MainActivity.this.mText
  • 你能运行这个应用程序吗?我坚信一启动它就会崩溃
  • 是的@iulian 应用程序崩溃。我不明白如何设置新的全局变量文本单击按钮一然后检索文本单击按钮二
  • 我认为如果你修复了崩溃,你的代码会做你想做的事。为此,在您执行第二个 findViewById 的位置更改 buttonTwo 中的 buttonOne。问题是您为同一个对象分配了 2 个值,而另一个为 null,这会导致崩溃

标签: java android variables methods scope


【解决方案1】:

你为clicklistener创建anonymous类对象,任何anonymous类或内部类对象都有关于外部类对象的信息,那么它就有权访问外部类对象的方法和变量

【讨论】:

  • 这样应用就崩溃了。我不明白如何设置新的全局变量文本单击按钮一然后检索文本单击按钮二
  • 它没有崩溃的理由..你能给我们错误信息吗?
猜你喜欢
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 2014-03-02
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多