0

この方法では、モードを1に設定します。

bTouch.setOnClickListener(new View.OnClickListener() {     
  public void onClick(View v) {
    mode1=1;
      Intent startGame = new Intent(
        "com.example.mygame.GFXSurface");
        startActivity(startGame);
  }
});

onTouchメソッドの他のクラスでそのモードを呼び出すと0が返されます

public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
    GameSurface gamesurface = new GameSurface(this);
    Mode mode2 = new Mode();
    mode= mode2.mode1; 
        if (mode == 1){        // this should be 1 but is 0
            x = event.getX();
            y = event.getY();

誰もがそれを行う方法の解決策を知っていますか?

4

1 に答える 1

1

いいえ、mode1値は1ではなく、0である必要があります。

これらの2つのコード行を見てください。

Mode mode2 = new Mode();
mode= mode2.mode1; 

今1つのコード行からMode mode2 = new Mode();

新しいClassModeオブジェクトを作成していますmode2

クラスオブジェクトの初期化ルールに従って、新しいModeクラスのメモリが割り当てられます。したがって、そのすべてのメンバー変数とフィールドは、新しいmwmoryで初期化されています。

今度はコード行2に来てください

mode = mode2.mode1; 

オブジェクトを使用してmode1、新しく作成されたクラスのメンバーフィールドにアクセスしています。Modemode2

では、どのようにして古い値1を保持できるのでしょうか。(もう一度考えて)

Now how can you access this value in other class?

メンバーフィールドmode1静的として作成し、クラスNameを使用してフィールドに直接アクセスします。

お気に入り、 Mode.mode1

または、mode1の値を設定したmode1の値を取得(取得)するために同じオブジェクトを使用します。

于 2012-09-19T17:38:50.533 に答える