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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在我的活动类中使用构造函数是否有意义? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

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

我想知道在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;
    }
}

所有帮助表示赞赏!

答案

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

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

并以这种方式检索它:

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

以上是关于在我的活动类中使用构造函数是否有意义? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

带参数的Java私有构造函数[重复]

是否可以覆盖 JavaScript 的 toString() 函数来为调试提供有意义的输出?

@autoreleasepool 在我的场景和 ARC 中是不是有意义?

仅使用 GCM 主题时收集注册令牌是不是有意义?

索引日期类型的核心数据属性是不是有意义?

如何调用嵌套类的构造函数[重复]