2016-10-08 11 views
0

私は簡単な例で変数の範囲を理解しようとしています。 は、私は私がクリックリスナーメソッドからマルチテキスト文字列にアクセスすることができますどのようにこのコードJava変数スコープグローバル

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をクリックしてグローバルにアクセスできるようにするにはどうすればよいですか?

+1

問題は何ですか? 'OnClickListener'の中から' mText'にアクセスしていませんか? – Onik

+0

すでに 'mtext'にアクセスしていますが、明示したい場合は、次のように修飾してください:' MainActivity.this.mText' – Andreas

+0

アプリケーションを実行できますか?私はあなたがそれを始めるとすぐにクラッシュするはずだと強く信じている。 –

答えて

1

は、あなたが任意のanonymousクラスまたは内部クラスのオブジェクトは、外部のクラスオブジェクトについての情報を持っているclicklistenerためanonymousクラスのオブジェクトを作成するに助けを

おかげで、それは外部のクラスオブジェクト

のメソッドや変数にアクセスする権利を持っていました
+0

このようにして、アプリケーションがクラッシュします。私は新しいグローバル変数テキストを設定する方法を理解していない1つのボタンをクリックして2つのボタンをクリックしてテキストを取得 –

+0

それはクラッシュする理由がありません..あなたは私たちにエラーメッセージを与えることができますか? –