Question

Why is my app crashing when I try to pass some data with intents?

 case 0:
             Intent intent=new Intent(context, RMpro.class);
             intent.putExtra("NAME", "Projectile!");
             intent.putExtra("PATH", R.raw.s14projectil);
             intent.putExtra("FILE", "Projectile.mp3");
             ((Activity)context).startActivity(intent);

             break;

In RMpro Activity:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ringtone);

  Intent i=this.getIntent();

       final  String C1 = getIntent().getStringExtra("PATH").trim();
       final  String A1 = getIntent().getStringExtra("NAME").trim();
       final  String B1 = getIntent().getStringExtra("FILE").trim();

Why is this happening? My Logcat:

04-08 16:07:34.811: E/AndroidRuntime(1174): FATAL EXCEPTION: main
04-08 16:07:34.811: E/AndroidRuntime(1174): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mostpopularalarmringtones/com.mostpopularalarmringtones.RMpro}: java.lang.NullPointerException
04-08 16:07:34.811: E/AndroidRuntime(1174):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2266)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at android.app.ActivityThread.access$600(ActivityThread.java:150)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at android.os.Looper.loop(Looper.java:213)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at android.app.ActivityThread.main(ActivityThread.java:5225)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at java.lang.reflect.Method.invokeNative(Native Method)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at java.lang.reflect.Method.invoke(Method.java:525)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at dalvik.system.NativeStart.main(Native Method)
04-08 16:07:34.811: E/AndroidRuntime(1174): Caused by: java.lang.NullPointerException
04-08 16:07:34.811: E/AndroidRuntime(1174):     at com.mostpopularalarmringtones.RMpro.onCreate(RMpro.java:37)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at android.app.Activity.performCreate(Activity.java:5133)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-08 16:07:34.811: E/AndroidRuntime(1174):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230)
04-08 16:07:34.811: E/AndroidRuntime(1174):     ... 11 more

What I did wrong in here? Why is my application crashing?

Was it helpful?

Solution

You should always check if result of getIntent() is null or not:

Intent i = getIntent();
if (i != null){
    final  String C1 = i.getStringExtra("PATH").trim();
    final  String A1 = i.getStringExtra("NAME").trim();
    final  String B1 = i.getStringExtra("FILE").trim();
    ....
}

Moreover, when you put data to your Intent and later retrieve it with getStringExtra, you should make sure, that you put String. The value of R.raw.s14projectil is always int. If s14projectil is the file with data, you should read it at first by opening InputStream:

InputStream raw = getResources().openRawResource(R.raw.s14projectil);

And only after that pass the content to intent.

OTHER TIPS

You put int into extras (R.raw.s14projectil is value of int):

intent.putExtra("PATH", R.raw.s14projectil);

And then try to retrieve a string:

final String C1 = i.getStringExtra("PATH").trim();

That is why you get NullPointerException

Use this code it may help you.

Case 0:
Intent intent=new Intent(context, RMpro.class);
Bundle extra = new Bundle();
extra.putString("NAME", "Projectile!");
extra.putString("PATH", R.raw.s14projectil);
extra.putString("FILE", "Projectile.mp3");
intent.putExtras(extra);
((Activity)context).startActivity(intent);

And in RMpro Activity:

Intent Rmintent= getIntent();
Bundle extras = Rmintent.getExtras();
final  String C1 = extras.getString("PATH").trim();
final  String A1 = extras.getString("NAME").trim();
final  String B1 = extras.getString("FILE").trim();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top