“致命异常:MAIN”再次

问题描述:

我已经有这个问题,并解决它之前*s帮助,但它已经又回来了。当我点击其中一个按钮时,开启一项新活动,但应用程序关闭。“致命异常:MAIN”再次

的MainMenu

package com.example.musicbynumbers; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.ListActivity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.ListView; 

public class MainMenu extends Activity implements View.OnClickListener { 
    Button majScales, minHarm, minMel; 
    ImageButton mainMenu; 
    Intent j; 
    Intent k; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_menu); 
     j = new Intent(this, majorScales.class); 
      k = new Intent(MainMenu.this, minorHarmonic.class); 
     mainMenu = (ImageButton) findViewById(R.id.imagelogo); 
     majScales = (Button) findViewById(R.id.majorscalesb); 
     minHarm = (Button) findViewById(R.id.minorharmonicb); 
     minMel = (Button) findViewById(R.id.minormelodicb); 
     majScales.setOnClickListener(this); 
     mainMenu.setOnClickListener(this); 
     minHarm.setOnClickListener(this); 
     minMel.setOnClickListener(this); 



    } 




     @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       switch(arg0.getId()){ 
       case R.id.imagelogo: 
        Intent i = new Intent(MainMenu.this, MainMenu.class); 
        startActivity(i); 
        break; 
       case R.id.majorscalesb: 

        startActivity(j); 
        break; 
       case R.id.minorharmonicb: 

        startActivity(k); 
        break; 
       case R.id.minormelodicb: 
        Intent l = new Intent(MainMenu.this, minorMelodic.class); 
        startActivity(l); 
        break; 


    } 

} 
} 

majorScales

package com.example.musicbynumbers; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.ListActivity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.ListView; 

public class majorScales extends Activity implements View.OnClickListener { 
    Button aflatmaj, amaj, bflatmaj, bmaj, cmaj, dflatmaj, dmaj, eflatmaj, emaj, fmaj, fsharpmaj, gmaj; 
    ImageButton mainMenu; 
    Intent j; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_menu); 
     j = new Intent(this, display.class); 
     mainMenu = (ImageButton) findViewById(R.id.imagelogo); 
     aflatmaj = (Button) findViewById(R.id.aflatmajb); 
     amaj = (Button) findViewById(R.id.amajb); 
     bflatmaj = (Button) findViewById(R.id.bflatmajb); 
     bmaj = (Button) findViewById(R.id.bmajb); 
     cmaj = (Button) findViewById(R.id.cmajb); 
     dflatmaj = (Button) findViewById(R.id.dflatmajb); 
     dmaj = (Button) findViewById(R.id.dmajb); 
     eflatmaj = (Button) findViewById(R.id.eflatmajb); 
     emaj = (Button) findViewById(R.id.emajb); 
     fmaj = (Button) findViewById(R.id.fmajb); 
     fsharpmaj = (Button) findViewById(R.id.fsharpmajb); 
     gmaj = (Button) findViewById(R.id.gmajb); 
     mainMenu.setOnClickListener(this); 
     aflatmaj.setOnClickListener(this); 
     amaj.setOnClickListener(this); 
     bflatmaj.setOnClickListener(this); 
     bmaj.setOnClickListener(this); 
     cmaj.setOnClickListener(this); 
     dflatmaj.setOnClickListener(this); 
     dmaj.setOnClickListener(this); 
     eflatmaj.setOnClickListener(this); 
     emaj.setOnClickListener(this); 
     fmaj.setOnClickListener(this); 
     fsharpmaj.setOnClickListener(this); 
     gmaj.setOnClickListener(this); 



    } 




     @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       switch(arg0.getId()){ 
       case R.id.imagelogo: 
        Intent i = new Intent(majorScales.this, MainMenu.class); 
        startActivity(i); 
        break; 
       case R.id.aflatmajb: 

        startActivity(j); 
        break; 
       case R.id.amajb: 

        startActivity(j); 
        break; 
       case R.id.bflatmajb: 

        startActivity(j); 
        break; 
       case R.id.bmajb: 

        startActivity(j); 
        break; 
       case R.id.cmajb: 

        startActivity(j); 
        break; 
       case R.id.dflatmajb: 

        startActivity(j); 
        break; 
       case R.id.dmajb: 
        ; 
        startActivity(j); 
        break; 
       case R.id.eflatmajb: 
        ; 
        startActivity(j); 
        break; 
       case R.id.emajb: 
        ; 
        startActivity(j); 
        break; 
       case R.id.fmajb: 
        ; 
        startActivity(j); 
        break; 
       case R.id.fsharpmajb: 
        ; 
        startActivity(j); 
        break; 
       case R.id.gmajb: 
        ; 
        startActivity(j); 
        break; 



    } 

} 
} 

minorHarmonic

package com.example.musicbynumbers; 

import android.app.Activity; 
import android.os.Bundle; 

public class minorHarmonic extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.minorharmonic); 
    } 

} 

AndroidManifest

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.musicbynumbers" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="16" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.musicbynumbers.MainMenu" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.example.musicbynumbers.majorScales" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="com.example.musicbynumbers.majorScales" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.example.musicbynumbers.minorHarmonic" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="com.example.musicbynumbers.minorHarmonic" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
    </application> 


</manifest> 

更新:我添加minorHarmonic到清单和该活动打开它似乎只是majorScales。

+1

使用logcat的检查与错误相关的堆栈跟踪。它不了解堆栈跟踪,通过“编辑”链接将其添加到您的问题。 – CommonsWare

+0

'产生的原因:显示java.lang.NullPointerException ...在com.example.musicbynumbers.majorScales'的错误是在你的'majorscales'活动。发布此代码,答案很简单,但我需要上下文。 – Sam

+0

你的代码让我的眼睛流血 – Blundell

你需要创建你的意图onCreate()被称为后。使用此:

Intent j; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_menu); 

    j = new Intent(this, display.class); 

原因听起来有些复杂:在Intent引用this使用活动的背景下,但这种语境下是无效的,直到onCreate()后。


增加:

我注意到你是从你的清单缺少几个活动:

<activity android:name=".display" /> 
<activity android:name=".minorHarmonic" /> 
// etc 
+0

仍然强制关闭病在早上继续 –

+0

我发现了一些潜在的错误并更新了我的答案。 – Sam

+0

感谢您的帮助majorScales的布局设置为主菜单xml文件。 –