2012-07-18 129 views
2

我在按下激活我的单选按钮所在的xml按钮后遇到应用程序崩溃问题。java.lang.nullpointerexception错误:应用程序崩溃

logcat说我的错误是java.lang.nullpointerexception。

我已经包括我的logcat,发生错误的Java和清单。

我原来有我的RadioButtons问题,在那里该程序允许我让他们既检查,也不可能取消选中。当我改变编码以包括onCheckChange听众时,当我按RadioButton时,该应用现在崩溃。

07-17 18:09:37.067: W/dalvikvm(329): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
07-17 18:09:37.077: E/AndroidRuntime(329): FATAL EXCEPTION: main 
07-17 18:09:37.077: E/AndroidRuntime(329): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.com.proto1/com.example.com.proto1.Voiceprompt}: java.lang.ClassNotFoundException: com.example.com.proto1.Voiceprompt in loader dalvik.system.PathClassLoader[/data/app/com.example.com.proto1-2.apk] 
07-17 18:09:37.077: E/AndroidRuntime(329): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569) 
07-17 18:09:37.077: E/AndroidRuntime(329): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
07-17 18:09:37.077: E/AndroidRuntime(329): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
07-17 18:09:37.077: E/AndroidRuntime(329): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
07-17 18:09:37.077: E/AndroidRuntime(329): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-17 18:09:37.077: E/AndroidRuntime(329): at android.os.Looper.loop(Looper.java:123) 
07-17 18:09:37.077: E/AndroidRuntime(329): at android.app.ActivityThread.main(ActivityThread.java:3683) 
07-17 18:09:37.077: E/AndroidRuntime(329): at java.lang.reflect.Method.invokeNative(Native Method) 
07-17 18:09:37.077: E/AndroidRuntime(329): at java.lang.reflect.Method.invoke(Method.java:507) 
07-17 18:09:37.077: E/AndroidRuntime(329): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
07-17 18:09:37.077: E/AndroidRuntime(329): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
07-17 18:09:37.077: E/AndroidRuntime(329): at dalvik.system.NativeStart.main(Native Method) 
07-17 18:09:37.077: E/AndroidRuntime(329): Caused by: java.lang.ClassNotFoundException: com.example.com.proto1.Voiceprompt in loader dalvik.system.PathClassLoader[/data/app/com.example.com.proto1-2.apk] 
07-17 18:09:37.077: E/AndroidRuntime(329): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
07-17 18:09:37.077: E/AndroidRuntime(329): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
07-17 18:09:37.077: E/AndroidRuntime(329): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
07-17 18:09:37.077: E/AndroidRuntime(329): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
07-17 18:09:37.077: E/AndroidRuntime(329): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561) 
07-17 18:09:37.077: E/AndroidRuntime(329): ... 11 more 


    package com.example.com.proto1; 

import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.RadioGroup.OnCheckedChangeListener; 

public class VoicePrompts extends Activity implements OnCheckedChangeListener { 

    RadioButton on, off, onc, offc; 

    // Button Sound 
    MediaPlayer buttonSound1 = MediaPlayer.create(VoicePrompts.this, R.raw.vpo); 
    MediaPlayer buttonSound2 = MediaPlayer 
      .create(VoicePrompts.this, R.raw.vpof); 
    MediaPlayer buttonSound3 = MediaPlayer 
      .create(VoicePrompts.this, R.raw.vpoc); 
    MediaPlayer buttonSound4 = MediaPlayer.create(VoicePrompts.this, 
      R.raw.vpofc); 

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

     // Setting up the button references 
     on = (RadioButton) findViewById(R.id.vbutton1); 
     off = (RadioButton) findViewById(R.id.vbutton2); 
     onc = (RadioButton) findViewById(R.id.vbutton1); 
     offc = (RadioButton) findViewById(R.id.vbutton2); 

     buttonSound1 = MediaPlayer.create(VoicePrompts.this, R.raw.vpo); 
     buttonSound2 = MediaPlayer.create(VoicePrompts.this, R.raw.vpof); 
     buttonSound3 = MediaPlayer.create(VoicePrompts.this, R.raw.vpoc); 
     buttonSound4 = MediaPlayer.create(VoicePrompts.this, R.raw.vpofc); 
    } 

    public void onCheckedChanged(RadioGroup arg0, int checkedId) { 
     // TODO Auto-generated method stub 
     switch (checkedId) { 
     case R.id.vbutton1: 
      on.setOnLongClickListener(new View.OnLongClickListener() { 

       public boolean onLongClick(View v) { 
        // TODO Auto-generated method stub 
        try { 
         buttonSound1.prepare(); 
         buttonSound1.start(); 
         startActivity(new Intent("android.intent.action.VPON")); 

        } catch (Exception e) { 

        } 
        return false; 
       } 
      }); 

      onc.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        try { 
         buttonSound3.prepare(); 
         buttonSound3.start(); 
         startActivity(new Intent("android.intent.action.VPON")); 
        } catch (Exception e) { 

        } 
        ; 

       } 
      }); 

      break; 
     case R.id.vbutton2: 

      off.setOnLongClickListener(new View.OnLongClickListener() { 

       public boolean onLongClick(View v) { 
        // TODO Auto-generated method stub 
        try { 
         buttonSound2.prepare(); 
         buttonSound2.start(); 
         startActivity(new Intent("android.intent.action.VPOFF")); 
        } catch (Exception e) { 

        } 
        ; 
        return false; 

       } 
      }); 

      offc.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        try { 
         buttonSound4.prepare(); 
         buttonSound4.start(); 
         startActivity(new Intent("android.intent.action.VPOFF")); 
        } catch (Exception e) { 

        } 
        ; 

       } 
      }); 

      break; 
     } 

    } 

} 




<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.com.proto1" 
    android:versionCode="1" 
    android:versionName="1.0" > 

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

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".mainj" 
      android:label="@string/title_activity_mainj" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".menu" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MENU" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".Infoactive" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.INFOSCREEN" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".VoicePrompts" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.VOICEPROMPTS" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".VPon" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.VPON" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".VPoff" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.VPOFF" /> 

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

</manifest> 





package com.example.com.proto1; 

import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class menu extends Activity { 

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

     // Button Sound 
     final MediaPlayer buttonSound = MediaPlayer.create(menu.this, 
       R.raw.button_click); 

     // Setting up the button references 
     Button info = (Button) findViewById(R.id.aboutbutton); 
     Button voice = (Button) findViewById(R.id.voicebutton); 

     info.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       buttonSound.start(); 
       startActivity(new Intent("android.intent.action.INFOSCREEN")); 

      } 
     }); 

     voice.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       buttonSound.start(); 
       Intent voiceIntent = new Intent("android.intent.action.VOICEPROMPTS"); 
       startActivity(voiceIntent); 
      } 
     }); 

    } 
} 
+1

我没有看到堆栈跟踪任何空指针初始化......但无论如何,错误似乎是由一个ClassNotFoundException引起的,这意味着类加载器是不能够找到你的班级。 – Shine 2012-07-18 14:48:40

回答

1

我认为你有两个活动名称为VoicePromptsVoicePrompt。您在清单文件中声明VoicePrompts。但是你打电话给VoicePrompt

编辑根据您的新问题

的MediaPlayer buttonSound1,buttonSound2,buttonSound3,buttonSound4;

onCreate

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

    // Setting up the button references 
    on = (RadioButton) findViewById(R.id.vbutton1); 
    off = (RadioButton) findViewById(R.id.vbutton2); 
    onc = (RadioButton) findViewById(R.id.vbutton1); 
    offc = (RadioButton) findViewById(R.id.vbutton2); 
    buttonSound1 = MediaPlayer.create(VoicePrompts.this, 
     R.raw.vpo); 
    buttonSound2 = MediaPlayer.create(VoicePrompts.this, 
     R.raw.vpof); 
    buttonSound3 = MediaPlayer.create(VoicePrompts.this, 
     R.raw.vpoc); 
    buttonSound4 = MediaPlayer.create(VoicePrompts.this, 
     R.raw.vpofc); 
} 
+0

我已经在我的帖子编辑中添加了调用该活动的java,我认为它看起来是正确的。 – 2012-07-18 15:02:16

+0

我已经编辑我的答案,现在看看它.. – 2012-07-18 15:26:17

+0

和请再读你的问题..这是非常混乱的..'LogCat'反映活动尚未开始。但是你写'现在应用程序崩溃时,我按下一个RadioButton.'请看看它...并清理你的问题一点点。 – 2012-07-18 15:29:29

2

给按钮Refrences后setContentView(R.layout.voiceprompts);

一样,

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

     // Setting up the button references 

      on = (RadioButton) findViewById(R.id.vbutton1); 
      off = (RadioButton) findViewById(R.id.vbutton2); 
      onc = (RadioButton) findViewById(R.id.vbutton1); 
      offc = (RadioButton) findViewById(R.id.vbutton2); 
    } 
+0

我按照以下步骤操作,现在每当按按钮打开单选按钮所在的xml时,我都会得到相同的错误。 – 2012-07-18 14:44:16

+1

你可以在明确的文件中添加活动吗?' – 2012-07-18 14:45:37

+0

你能澄清吗?你说你添加 – 2012-07-18 15:03:56

相关问题