2016-06-26 37 views
2

我想通过Intent将一个对象传递给一个活动,并且在我调试时,我注意到,显然我从来没有进入该活动的onCreate()方法。即使活动开始,我也有布局和一切,但我没有机会进行调试,因为onCreate()方法内的断点从未达到过。这怎么可能,我在这里不了解什么?帮助:)android onCreate(Bundle savedInstanceState)

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;)

感谢您的阅读!

+0

在回调方法内部添加一个日志或者一个toast来知道你是否达到它。 –

+0

是在manifest中声明的活动吗?你有尝试把调试器放在控制器=(控制器)上吗? –

+0

那么,它必须在某个时候达到,因为活动打开(只有在调用setContentView(R.layout.calc1);'时才可能),但我不明白为什么我不能调试。是的,一切都在清单中。我在'setController(controller);'后添加了Toast,但它没有出现。也是的,我试图把调试器放在方法的其他地方。它从来没有工作。 – mcCat

回答

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等)。然后尝试在不同活动之间进行导航,查杀应用程序,按主屏幕按钮,锁定屏幕,旋转屏幕等等。您会注意到流程并不完全相同,并且它会帮助您找出在哪里把你的代码放在你特定的用例中。希望这可以帮助!

+0

非常感谢!我肯定会读到:)我知道生命周期开始时有点混乱,这就是为什么我在玩弄它并尝试调试很多。在这种情况下,我只是没有(也不知道)我的调试器如何不会启动,即使这个活动正在运行。也许我会在阅读你发布的链接后找出答案)再次感谢! – mcCat

1

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

在调试模式下运行

尝试菜单运行>调试 '应用'(ALT + SHIFT + d)

要在释放模式运行

尝试菜单运行>运行“ (Alt + Shift + X)

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

+0

我确实以调试模式运行;) – mcCat

相关问题