[英]Android - error opening trace file: No such file or directory
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. 这是一个非常简单的应用程序,一个广播组中的3个单选按钮,每个按钮都会触发一首不同的歌曲。
I will start by posting my Manifest, my activity file, and layout then post the error log. 我将首先发布我的Manifest,我的活动文件和布局,然后发布错误日志。
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: 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 02-21 20:34:05.044:D / AndroidRuntime(322):关闭VM 02-21 20:34:05.044:W / dalvikvm(322):threadid = 1:线程退出未捕获异常(组= 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:无法实例化活动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):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)02-21 20:34:05.094:E / AndroidRuntime(322):在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):在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) :34:05.094:E / AndroidRuntime(322):在android.os.Looper.loop(Looper.java:123)02-21 20:34:05.094:E / AndroidRuntime(322):在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):引起:java.lang.NullPointerException 02-21 20: 34:05.094:E / AndroidRuntime(322):在android.content.ContextWrapper.getResources(ContextWrapper.java:80)02-21 20:34:05.094:E / AndroidRuntime(322):在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 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):在android.app.Instrumentation.newActivity(Instrumentation.java:1021)02-21 20:34:05.094:E / AndroidRuntime(322):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java) :2577)02-21 20:34:05.094:E / AndroidRuntime(322):... 11更多
Any help would be greatly appreciated. 任何帮助将不胜感激。
Try moving mediaplayer = MediaPlayer.create(this, song);
尝试移动mediaplayer = MediaPlayer.create(this, song);
to inside onCreate()
. 到onCreate()
里面。
Since the Activity isn't fully initialized until onCreate()
, this may be the cause of the NPE. 由于活动在onCreate()
之前没有完全初始化,这可能是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). 但是 ,下一个问题是您创建的MediaPlayer的歌曲最初为0
(当它是实例变量时,int的默认值为0
)。 So if moving MediaPlayer.create
solves this NPE, the next error will be something about not being able to find the resource. 因此,如果移动MediaPlayer.create
解决此 NPE,则下一个错误将是无法找到资源。 Therefore, call MediaPlayer.create
once song
holds on to something useful . 因此,一旦song
保持有用的东西,就调用MediaPlayer.create
。
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()
. 如果歌曲没有在其他任何地方使用,你可以将它保持在onCheckedChanged()
的范围内。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.