2017-03-23 9 views
0

これはかなり混乱しています。私のMainActivity.javaでは、私は別のファイル内の別のクラスにオーバー行くことになっていますボタンRedGreenTest.javaAndroid Intent SwitchingがクラッシュするonClick

redButton.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
     findViewById(R.id.testRG_button); 
     Intent i = new Intent(MainActivity.this, RedGreenTest.class); 
     startActivity(i); 
    } 
}); 

だから、ボタンをクリックし、BAMのINSTA-クラッシュますがあります。デバッガは、それがstartActivity(i);であることを私に伝えます。マニフェストに入ると、私は<activity android:name=".MainActivity"><activity android:name=".RedGreenTest">に変更し、アプリはうまく起動します。私RedGreenTest.java

@Override 
    protected void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test_select_layout); 
... 

そして、私のonCreate():ここで

MainActivity.javaファイルからの私のonCreate()クラスの始まりです

デバッガを介してこれを実行する
@Override 
    protected void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.red_green_layout); 
... 

、私は」マニフェストにRedGreenTest.javaファイルが設定されているときにエラーが発生しません。

単純なインテントスイッチには何が欠けていますか?

答えて

1

あなたがマニフェストに追加され、両方の活動を持っている必要があります:

<activity android:name=".RedGreenTest"> 
    ... 
<activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 

あなたはRedGreenTestにMainActivityを変更するとアプリが起動し、あなたがRedGreenTestアクティビティを設定しているため、打ち上げの活動であることがあることを理由ていますインテントフィルタによって設定されます。

+0

キリスト、それは痛いほど単純です....それを完全に修正しました。私は今、本当のdivのように感じる。これをありがとうございました。 私の教授は、あなたがマニフェストに複数の人を持つことができると教えてくれたことはありません。実際、Android Studioの使い方以外は教えてくれていません。 – bonzo

+0

笑...申し訳ありません。しかし、それは基本的な問題だとあなたは正しいです。記録のために、マニフェストに各アクティビティを追加する必要があります。インテントフィルター、ブロードキャストレシーバーなどを使って、すばらしいことをすることができます。見てみな。マニフェストはかなりのものに使われます。他のすべてと幸運。 – BlackHatSamurai

関連する問題