2016-06-11 21 views
-2

しようとしたときに「)メソッドgetApplicationを(解決できない」私はmutliple他のスタックの回答のようにグローバル変数を作成しようとしているが、私はこれらすべての指示に従ったときに、私が得ます他のアクティビティでこの変数を取得または設定します。私は間違って何をしていますか?そして、この変数をどうやって取得/設定しますか?ここでMainActivityコードだ:方法getApplicationを(解決できない対Androidのグローバル変数)

public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
    } 

    private int globalVariable_Move; 

    public int getGlobalVariable_Move() { 
     return globalVariable_Move; 
    } 

    public void setGlobalVariable_Move(int value) { 
     globalVariable_Move = value; 
    } 

そして、ここでは別のアクティビティコードは次のとおりです。

public class PlayActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_play); 

     gameView.setOnTouchListener(new View.OnTouchListener(){ 
      public boolean onTouch(View v, MotionEvent event){ 
       int tempGlobalVariableMove = ((MainActivity) this.getApplication()).getGlobalVariable_Move(); 
       return true; 
      } 
     }); 
    } 
} 
+1

'getApplication()'は 'MainActivity'ではなく' Application'を返します。私は、あなたがやっていることについて共有の設定を使うことをお勧めします。 – tynn

答えて

1

あなたはいない活動中のアプリケーションのカスタムクラスでそれを実装する必要があります。

public class CustomApplication extends Application { 

    private Tracker mTracker; 

    public Tracker getDefaultTracker() { 
     if (mTracker == null) { 
      mTracker = new Tracker(); 
     } 
     return mTracker; 
    } 
} 

など任意のActivityクラスからこれを取得:

CustomApplication app = (CustomApplication) getApplication(); 
app.getDefaultTracker(); 

それとも、より良い地球の状態や変数を格納するためにSingletonパターンを使用して、このような何か。

関連する問題