在我的活动类中使用构造函数是否有意义?

时间:2017-12-20 10:42:07

标签: java android class constructor instance

我面临的当前问题是从我的活动类中获取值。这是我获取用户输入并将其传递给我的播放器以决定应该发生什么的地方。

我想知道在activity类和onCreate中有一个构造函数是否有意义?我不太了解其中的差异但是我知道如果我在类中创建一个构造函数并在构造函数中设置变量的值,它就会传递该变量。如果我没有构造函数,则该类将返回0(null)到我的Player类。我将尽可能少地包括并尝试解释我的意思,因为我发现没有一个例子很难解释。

Game.java |活动类

public class Game extends Activity implements SensorEventListener{

    private int yDirection, xDirection;

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

        setContentView(new GameView(this));
    }

    @Override
    public boolean onTouchEvent(MotionEvent motionEvent) {
        switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
                yDirection = 1;
                break;
            case MotionEvent.ACTION_UP:
                yDirection = 2;
                break;
        }
        return true;
    }

    public int getyDirection() {
        return yDirection;
    }

}

Player.java

public class Player {

    Game userInput;

    public Player(Context context){

        userInput = new Game();
    }
}

我没有包含我调用它的部分但是如果我在Player类中调用Game.java中的值,它将返回0(null)但是如果我记录变量名并从Game.java类中查看它这将是正确的价值。

如果我保持播放器类相同,但改变Game.java类如下,我将不断得到值5返回,因为它在构造函数中设置但是它不会更新,因为它应该由播放器类调用

Game.java |活动类

public class Game extends Activity implements SensorEventListener{

    private int yDirection, xDirection;

    public Game(){
            yDirection = 5;
        }

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

        setContentView(new GameView(this));
    }

    @Override
    public boolean onTouchEvent(MotionEvent motionEvent) {
        switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
                yDirection = 1;
                break;
            case MotionEvent.ACTION_UP:
                yDirection = 2;
                break;
        }
        return true;
    }


    public int getyDirection() {
        return yDirection;
    }
}

感谢所有帮助!

1 个答案:

答案 0 :(得分:0)

要将值传递给另一个人启动的活动,您应该使用Intent:

Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent);

并以这种方式检索:

String s = getIntent().getStringExtra("EXTRA_SESSION_ID");