2016-09-16 4 views
0

MenuScreenアクティビティ内のボタンのテキストをChangeClassから変更しようとしています。パラメータ/引数としてコンテキストを使用する

それが動作可能かのように見えるソリューションIを見つけたここに他の回答を見て:私の問題は、私が呼び出しの引数としてコンテキストを参照する方法がわからないよ、ある

public class ChangeClass{ 
    protected MenuScreen context; 

    public ChangeClass(MenuScreen context) { 
     this.context = context; 
    } 

    public void setupMenu(){ 
     context.runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       context.btnMenuScreen0.setText("test 1"); 
      } 
     }); 
    } 

をメソッド。

  ChangeClass changeClass = new ChangeClass (/*what goes here?*/); 
      ChangeClass.setupMenu(); 

私が最終的にアクセスしたいクラスは、MenuScreen.classです。議論の中でそれをコンテキストと呼ぶにはどうしたらいいですか?

+0

MenuScreenでテキストを変更するためのパブリックメソッドを作成し、テキストを他のクラスやアクティビティから変更したい場合はいつでも呼び出すことができます。 –

+0

これは、より良い方法を見つけるまで、機能的な回避策です。提案していただきありがとう:) – BR89

+0

これは簡単な回避策です。あなたのアクティビティへのコールバックとしてインターフェイスを使用することができます。このコンセプトはあなたの質問と同じです。 –

答えて

0

ChangeClassではcontextContextクラスのインスタンスにするだけです。

その後
public class ChangeClass{ 
    protected Context context; 

    public ChangeClass(Context context) { 
     this.context = context; 
    } 
    ... 

新しいChangeClassを作成し、その

ChangeClass changeClass = new ChangeClass(MenuScreen.this); 
+0

'ChangeClass changeClass = new ChangeClass(MenuScreen.this);'は私にそれを囲むクラスではないというエラーを与えています。 – BR89

0

ChangeActivityを呼び出すときは、

startActivityForResult(Intent, requestcode); 

を使用することができますいずれかのようにそれを行う、その後

を使用してMenuActivityにそれをキャッチ
protected void onActivityResult(int requestCode, int resultCode, Intent data) 

Hereは、それを行う方法のサンプルです。

OR

あなたは自分のChangeActivityに続いて、ボタン

public static Button btn; 

を作ることができ、あなたは可能性だけ

MenuActitivy.btn.setText("Hi"); 

お役に立てば幸いです。

+0

私は静的メソッドを使用しようとしましたが、なんらかの理由で 'java.lang.NullPointerException:仮想メソッドを呼び出そうとしています 'というメッセージが表示されるnullのオブジェクト参照でvoid android.widget.Button.setText(java.lang.CharSequence) ' – BR89

+0

静的メソッドはありません。しかし、静的な変数です。私はそのエラーがボタンを初期化していないことが原因だと思う。確認してください。 btn =(ボタン)findviewById(R.id.button); –

+0

ボタンは、実際に使用されたアクティビティで初期化されます。 setTextメソッドを呼び出すアクティビティで初期化する必要がありますか? – BR89

関連する問題