java Android - 打开跟踪文件时出错:没有那个文件或目录

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15016424/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 18:12:37  来源:igfitidea点击:

Android - error opening trace file: No such file or directory

javaandroidnullpointerexceptionruntimeandroid-mediaplayer

提问by Jarryd Goodman

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 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

02-21 20:34:05.044: D/AndroidRuntime(322): 关闭 VM 02-21 20:34:05.044: W/dalvikvm(322): threadid=1: 线程退出并出现未捕获的异常 (group=0x4001d800) 02 -21 20:34:05.094: E/AndroidRuntime(322): 致命异常: 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):在 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):在 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): 在 java.lang.reflect.Method.invokeNative(Native Method) 02-21 20:34:05.094: E /AndroidRuntime(322): 在 java.lang.reflect.Method.invoke(Method.java:521) 02-21 20:34:05.094: E/AndroidRuntime(322): 在 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): 在 com.cis298.lab2.LayoutActivity.(LayoutActivity.java:15) 02-21 20:34:05.094: E/AndroidRuntime( 322): 在 java.lang.Class.newInstanceImpl(Native Method) 02-21 20:34:05.094: E/AndroidRuntime(322): 在 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.

任何帮助将不胜感激。

采纳答案by A--C

Try moving mediaplayer = MediaPlayer.create(this, song);to inside onCreate().

尝试移动 mediaplayer = MediaPlayer.create(this, song);到里面onCreate()

Since the Activity isn't fully initialized until onCreate(), this may be the cause of the NPE.

由于 Activity 直到 才完全初始化onCreate(),这可能是 NPE 的原因。

However, the next problem is that you create the MediaPlayer with song being initially 0(int has a default value of 0when it is an instance variable). So if moving MediaPlayer.createsolves thisNPE, the next error will be something about not being able to find the resource. Therefore, call MediaPlayer.createonce songholds on to something useful.

但是,下一个问题是您创建的 MediaPlayer 最初是歌曲00当它是实例变量时,int 具有默认值)。所以如果移动MediaPlayer.create解决了这个NPE,下一个错误将是无法找到资源。因此,呼叫MediaPlayer.create一次song抓住一些有用的东西。

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().