0

我是安卓新手。当我运行我的应用程序时,它在横向模式下运行良好,但在纵向模式下,应用程序被强制关闭,在日志中显示以下内容

05-31 16:48:30.958: W/KeyCharacterMap(428): No keyboard for id 0
05-31 16:48:30.958: W/KeyCharacterMap(428): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
05-31 16:50:45.728: D/AndroidRuntime(484): Shutting down VM
05-31 16:50:45.728: W/dalvikvm(484): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
05-31 16:50:45.758: E/AndroidRuntime(484): FATAL EXCEPTION: main
05-31 16:50:45.758: E/AndroidRuntime(484): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kalmas/com.kalmas.Kalma2}: java.lang.NullPointerException
05-31 16:50:45.758: E/AndroidRuntime(484):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
05-31 16:50:45.758: E/AndroidRuntime(484):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-31 16:50:45.758: E/AndroidRuntime(484):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-31 16:50:45.758: E/AndroidRuntime(484):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-31 16:50:45.758: E/AndroidRuntime(484):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-31 16:50:45.758: E/AndroidRuntime(484):  at android.os.Looper.loop(Looper.java:123)
05-31 16:50:45.758: E/AndroidRuntime(484):  at android.app.ActivityThread.main(ActivityThread.java:4627)
05-31 16:50:45.758: E/AndroidRuntime(484):  at java.lang.reflect.Method.invokeNative(Native Method)
05-31 16:50:45.758: E/AndroidRuntime(484):  at java.lang.reflect.Method.invoke(Method.java:521)
05-31 16:50:45.758: E/AndroidRuntime(484):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-31 16:50:45.758: E/AndroidRuntime(484):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-31 16:50:45.758: E/AndroidRuntime(484):  at dalvik.system.NativeStart.main(Native Method)
05-31 16:50:45.758: E/AndroidRuntime(484): Caused by: java.lang.NullPointerException
05-31 16:50:45.758: E/AndroidRuntime(484):  at com.kalmas.Kalma2.onCreate(Kalma2.java:52)
05-31 16:50:45.758: E/AndroidRuntime(484):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-31 16:50:45.758: E/AndroidRuntime(484):  at          android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-31 16:50:45.758: E/AndroidRuntime(484):  ... 11 more
05-31 16:50:48.108: I/Process(484): Sending signal. PID: 484 SIG: 9

我的 Kalma2.java 的代码是

package com.kalmas;

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

public class Kalma2 extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        final MediaPlayer   kalma2  =   MediaPlayer.create(this,   R.raw.kalma2);
        super.onCreate(savedInstanceState);
    setContentView(R.layout.kalma2);

    ImageView prev2 =   (ImageView)findViewById(R.id.prev2);

    prev2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            kalma2.stop();
            startActivity(new Intent(Kalma2.this,Kalma1.class));
        }
    });

    ImageView   next2   =   (ImageView)findViewById(R.id.next2);
    next2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            kalma2.stop();
            startActivity(new Intent(Kalma2.this,Kalma3.class));
        }
    });

    ImageView pause =   (ImageView)findViewById(R.id.pause2);
    pause.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            kalma2.pause();
        }
    });

    ImageView play  =   (ImageView)findViewById(R.id.play2);
    play.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            kalma2.start();
        }
    });

    ImageView kalma =   (ImageView)findViewById(R.id.kalma2);

    kalma.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            kalma2.start();
        }
    });



}

}
4

2 回答 2

1

据我所知,在第 52 行,您尝试将点击侦听器附加到 ImageView。

ImageView play  =   (ImageView)findViewById(R.id.play2);
play.setOnClickListener(new OnClickListener() { ...

你确定你的布局包含一个 ID 为 play2 的 ImageView 吗?也很高兴拥有 kalma2.xml 的代码:)

于 2012-05-31T11:14:02.637 回答
0

在没有看到您的布局并确切知道第 52 行是什么的情况下,很难说,但最可能的问题是您的一个findViewById调用返回 null,当您使用它尝试设置 clickListener 时,您会得到 NPE。

检查 id 并确保您匹配大小写以及 id。

于 2012-05-31T11:12:15.677 回答