i am new to android. While i am running my application, it is running well in landscape mode, but in portrait mode, application is forcefully closed giving the following in log

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

the code of my Kalma2.java is

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();
    }
});



}

}

Dani AI

Generated

A NullPointerException in onCreate that only happens in portrait almost always means the Activity tried to touch a view that doesn't exist in the layout that Android actually inflated. As discovered, the portrait layout was missing the view id used by the code. Two common causes are: setContentView is called after you access views, or you have different layout variants (layout/ vs layout-land/ or other qualifiers) where the required id is missing or misspelled.

Quick checklist to prevent this class of crash:

  • Call setContentView(...) before any findViewById(...) calls.
  • Verify every layout variant you ship (layout/, layout-land/, layout-sw600dp/, etc.) contains the same view ids the code expects.
  • Check XML ids for typos (use @+id/yourId).
  • If inflating inside a Fragment, call findViewById on the inflated view, not on the Activity.
  • Add simple null checks and a Log warning so a missing view fails gracefully instead of crashing.
  • Consider ViewBinding or findViewById with compile-time checks to catch mismatches early.

Safe pattern (illustrative) — initialize views after setContentView, guard against null, and properly release MediaPlayer:

private MediaPlayer mediaPlayer;

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

    mediaPlayer = MediaPlayer.create(this, R.raw.kalma2);

    ImageView playBtn = findViewById(R.id.play2);
    if (playBtn != null) {
        playBtn.setOnClickListener(v -> {
            if (mediaPlayer != null) mediaPlayer.start();
        });
    } else {
        Log.w("Kalma2", "play2 view missing in this layout");
    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
    if (mediaPlayer != null) {
        mediaPlayer.release();
        mediaPlayer = null;
    }
}

Extra tips: use the Layout Preview or tools attributes in XML to confirm which layout is used, and check the exact line number in the stacktrace to find which findViewById (or other call) returned null.

Solved it

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

my Kalma2.xml did not contain any id image with id "play2". Now its running fine

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.