android onCreate(Bundle savedInstanceState)

时间:2016-06-26 21:51:24

标签: java android oncreate

我试图通过Intent将一个对象传递给一个活动,当我正在调试时,我注意到我显然从未进入活动的onCreate()方法。即使活动开始,我也有布局和所有内容,我没有机会进行调试,因为onCreate()方法中的断点永远不会到达。这怎么可能,我在这里不理解什么?帮助:)

    listView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {

        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {


            String selection = itemsArray[groupPosition][childPosition];
            Class calc = null;

            switch (selection) {
                case "Calc1":
                    calc = Calc1.class;
                    break;
                case "Calc2":
                    calc = Calc2.class;
                    break;
            }

            Intent intent = new Intent(Main.this, calc);
            intent.putExtra("controller", getController());
            startActivity(intent);

            return false;
        }
    });

活动是在OnChildClick事件上启动的,我试图传递的对象是控制器(由getController()方法返回)

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.calc1);

    controller = (Controller) getIntent().getSerializableExtra("controller");
    setController(controller);

    editA = (EditText) findViewById(R.id.editA);
    editB = (EditText) findViewById(R.id.editB);
}

这是onCreate(),我将断点设置为setContentView(),就像我说的那样,显然我从未到过那里......我觉得我在这里错过了一些东西。

顺便说一下。我是android的新手;)

感谢阅读!

2 个答案:

答案 0 :(得分:1)

Android活动生命周期起初可能有点棘手。这是一个很好地解释它的图表:https://github.com/xxv/android-lifecycle您可以在此处获得有关所有活动的更多详细信息:https://developer.android.com/reference/android/app/Activity.html#onCreate(android.os.Bundle)

活动可能直接发送到onResume或onRestart,但如果你想确定(这是了解活动生命周期的更多信息的好方法!)将一些日志放入一堆不同的活动方法(onCreate,onPause,onRestart等)。然后尝试在不同的活动之间导航,杀死应用程序,按下主页按钮,锁定屏幕,旋转屏幕等等。您会注意到流程不完全相同,它会帮助您将代码放在特定用例中的位置。希望这有帮助!

答案 1 :(得分:1)

设置断点时,您是否在调试模式下运行?

以调试模式运行

尝试菜单运行>调试应用程序' (Alt + Shift + D)

以发布模式运行

尝试菜单运行>运行应用程序' (Alt + Shift + X)

如果您在发布模式下运行,当应用程序启动时,要启动调试,请选择菜单运行>将调试程序附加到Android进程>选择您的流程,然后转到您想要再次调试的活动。