2016-06-26 12 views
2

私はインテントを通じてアクティビティにオブジェクトを渡そうとしていますが、デバッグしているときに、私はアクティビティのメソッドonCreate()にはまったく参加していないようです。アクティビティが開始されたにもかかわらず、レイアウトとすべてがあり、onCreate()メソッド内のブレークポイントには決して到達しないため、デバッグする機会はありません。これはどのように可能です、私はここで何を理解していませんか?活動はOnChildClickイベントで開始された:)android onCreate(saved 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; 
     } 
    }); 

、私が通過しようとしているオブジェクトは(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()で、私が言ったように、明らかに私は決してそこに着くことはできません...私はここで何かを逃しているように感じる。

Btw。私はアンドロイドの新しいです;)

読んでいただきありがとうございます!

+0

コールバックメソッド内にログまたはトーストを追加して、到達したかどうかを確認します。 –

+0

はマニフェストで宣言されたアクティビティですか?あなたは代わりにコントローラ=(コントローラ)にデバッガを入れてみましたか? –

+0

(setContentView(R.layout.calc1);が呼び出された場合にのみ可能です)アクティビティが開かれるので、ある時点で到達する必要がありますが、なぜデバッグできないのか分かりません。はい、すべてが目録にあります。 'setController(controller);の後にToastを追加しましたが、表示されません。また、私はデバッガをメソッドの他の場所に置いてみました。それは決してうまくいかない。 – mcCat

答えて

1

Androidのアクティビティライフサイクルは、最初はややこしいことがあります。ここにはかなりよく説明されているダイアグラムがあります:https://developer.android.com/reference/android/app/Activity.html#onCreate(android.os.Bundle)

アクティビティがonResumeまたはonRestartにまっすぐに進む可能性がありますが、確かに確認したい場合は(そして、これはアクティビティのライフサイクルについて学ぶのに最適な方法です)いくつかのログをさまざまなアクティビティメソッド(onCreate、onPause、onRestartなど)に入れてください。次に、さまざまなアクティビティをナビゲートしたり、アプリを殺したり、ホームボタンを押したり、画面をロックしたり、画面を回転させたりするようなことを試してみましょう。フローが全く同じではないことに気付くでしょう。あなたの特定のユースケースにあなたのコードを入れてください。お役に立てれば!

+0

ありがとうございました!私は間違いなくそれを読むでしょう:)私は、ライフサイクルがちょっと混乱していることを知っています。それが私がそれを試していて、たくさんデバッグしようとしている理由です。この場合は、アクティビティが実行中であっても、デバッガがまったく起動しない方法を理解できませんでした。たぶん私はあなたが投稿したリンクを読んだ後に見つけるでしょう;)もう一度ありがとう! – mcCat

1

ブレークポイントを設定すると、デバッグモードで実行しましたか?

をデバッグモードで実行するには

トライメニューファイル名を指定して実行>デバッグ 'アプリ'(Altキー+ + Dシフト)

リリースモードで実行するには

トライメニューファイル名を指定して実行>実行]

リリースモードで実行している場合、アプリケーションが起動したときにデバッグを開始するには、メニューを選択してください。[実行]> [添付] Androidプロセスにバグする>プロセスを選択し、再度デバッグするアクティビティに移動します。

+0

デバッグモードで実行しました。 – mcCat

関連する問題