Android - error opening trace file: No such file or directory
Try moving mediaplayer = MediaPlayer.create(this, song);
to inside onCreate()
.
Since the Activity isn't fully initialized until onCreate()
, this may be the cause of the NPE.
However, the next problem is that you create the MediaPlayer with song being initially 0
(int has a default value of 0
when it is an instance variable). So if moving MediaPlayer.create
solves this NPE, the next error will be something about not being able to find the resource. Therefore, call MediaPlayer.create
once song
holds on to something useful.
Maybe something like this will work.
public class LayoutActivity extends Activity {
int song;
MediaPlayer mediaPlayer;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
RadioGroup radgrp = (RadioGroup) findViewById(R.id.radiogroup);
radgrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.dance:
song = R.raw.redalert;
break;
case R.id.rap:
song = R.raw.cannedheat;
break;
case R.id.rock:
song = R.raw.movmou8105;
break;
}
mediaplayer = MediaPlayer.create(LayoutActivity.this, song);
try {
mediaplayer.prepare();
mediaplayer.start();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
And if song isn't used anywhere else, you can keep it in the scope of onCheckedChanged()
.
Jarryd Goodman
Updated on June 15, 2022Comments
-
Jarryd Goodman almost 2 years
I'm getting a weird list of errors, some seemingly disconnected but I have no way to tell as I can't even get my App to load to debug. It's a very simple app, 3 radio buttons in a radio group and each one will trigger a different song to play.
I will start by posting my Manifest, my activity file, and layout then post the error log.
Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cis298.lab2" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:label = "@string/app_name" android:name = ".LayoutActivity"> <intent-filter > <action android:name = "android.intent.action.MAIN" /> <category android:name = "android.intent.category.LAUNCHER" /> </intent-filter> ></activity> </application> </manifest>
LayoutActivity:
package com.cis298.lab2; import java.io.IOException; import com.cis298.lab2.R; import android.app.Activity; import android.os.Bundle; import android.media.MediaPlayer; import android.widget.RadioGroup; public class LayoutActivity extends Activity { int song; MediaPlayer mediaplayer = MediaPlayer.create(this, song); public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.layout); try { mediaplayer.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } RadioGroup radgrp = (RadioGroup) findViewById(R.id.radiogroup); radgrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId){ case R.id.dance: song = R.raw.redalert; mediaplayer.start(); break; case R.id.rap: song = R.raw.cannedheat; break; case R.id.rock: song = R.raw.movmou8105; break;} } }); } }
layout:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <RadioGroup android:id="@+id/radiogroup" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:orientation="vertical" > <RadioButton android:id="@+id/rock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Play Rock" /> <RadioButton android:id="@+id/rap" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Play Rap" android:checked="true"/> <RadioButton android:id="@+id/dance" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Play Dance" android:textAlignment="center" /> </RadioGroup> </RelativeLayout>
Log:
02-21 20:34:05.044: D/AndroidRuntime(322): Shutting down VM 02-21 20:34:05.044: W/dalvikvm(322): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 02-21 20:34:05.094: E/AndroidRuntime(322): FATAL EXCEPTION: main 02-21 20:34:05.094: E/AndroidRuntime(322): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.cis298.lab2/com.cis298.lab2.LayoutActivity}: java.lang.NullPointerException 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.os.Handler.dispatchMessage(Handler.java:99) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.os.Looper.loop(Looper.java:123) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread.main(ActivityThread.java:4627) 02-21 20:34:05.094: E/AndroidRuntime(322): at java.lang.reflect.Method.invokeNative(Native Method) 02-21 20:34:05.094: E/AndroidRuntime(322): at java.lang.reflect.Method.invoke(Method.java:521) 02-21 20:34:05.094: E/AndroidRuntime(322): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 02-21 20:34:05.094: E/AndroidRuntime(322): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 02-21 20:34:05.094: E/AndroidRuntime(322): at dalvik.system.NativeStart.main(Native Method) 02-21 20:34:05.094: E/AndroidRuntime(322): Caused by: java.lang.NullPointerException 02-21 20:34:05.094: E/AndroidRuntime(322): at android.content.ContextWrapper.getResources(ContextWrapper.java:80) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.media.MediaPlayer.create(MediaPlayer.java:641) 02-21 20:34:05.094: E/AndroidRuntime(322): at com.cis298.lab2.LayoutActivity.(LayoutActivity.java:15) 02-21 20:34:05.094: E/AndroidRuntime(322): at java.lang.Class.newInstanceImpl(Native Method) 02-21 20:34:05.094: E/AndroidRuntime(322): at java.lang.Class.newInstance(Class.java:1429) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 02-21 20:34:05.094: E/AndroidRuntime(322): ... 11 more
Any help would be greatly appreciated.
-
Jarryd Goodman about 11 yearsThis was my issue (having to move it into the onCreate method). Also, it is taking me 5+ minutes to upload the APK everytime. I looked into it and people were complaining about 90 seconds so something must be really wrong, any idea?
-
A--C about 11 yearsWe've all been new, and your question was nice and detailed :-) with new users, I always link to that meta question if they said my answer right since not all are familiar with how all of SO works. Anyways, welcome!