Question

I use AndroidAnnotations in my app, and when I try to put extra into intent and start an activity, in which I use AndroidAnnotations, I always get a runtime error. When I stop using AndroidAnnotations, everything works fine.

Here is a code, which starts my activity:

public class TimeAndDateShower extends Activity {
//some code

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.time_and_date_shower);
        //some code
        setButtonListener();

    }
public void setButtonListener()
    {
        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener()
        {
          public void onClick(View v)
          {
              Intent intent = new Intent(TimeAndDateShower.this, DateChooser_.class);
              intent.putExtra("SSID", network);
              startActivity(intent);
              TimeAndDateShower.this.finish();
          }
        });
    }
}

Here is how DateChooser.java looks like:

@EActivity(R.layout.date_chooser)
public class DateChooser extends Activity {

    public String network;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.date_chooser);

        setNetworkName();
        //some code   
    }

    public void setNetworkName()
    {
        TextView textView = (TextView)findViewById(R.id.textView4);
        network = this.getIntent().getStringExtra("SSID");//using an extra
        textView.setText(network);
    }

}

In AndroidManifest.xml I declare DateChooser activity like this:

name="com.componentix.imwizard.DateChooser_" android:screenOrientation="landscape"> </activity>

And here is a log of my runtime error:

12-17 11:51:32.267: E/AndroidRuntime(3234): FATAL EXCEPTION: main
12-17 11:51:32.267: E/AndroidRuntime(3234): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.componentix.imwizard/com.componentix.imwizard.DateChooser_}: java.lang.NullPointerException
12-17 11:51:32.267: E/AndroidRuntime(3234):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at android.os.Looper.loop(Looper.java:137)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at android.app.ActivityThread.main(ActivityThread.java:4745)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at java.lang.reflect.Method.invokeNative(Native Method)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at java.lang.reflect.Method.invoke(Method.java:511)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at dalvik.system.NativeStart.main(Native Method)
12-17 11:51:32.267: E/AndroidRuntime(3234): Caused by: java.lang.NullPointerException
12-17 11:51:32.267: E/AndroidRuntime(3234):     at com.componentix.imwizard.DateChooser.setNetworkName(DateChooser.java:30)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at com.componentix.imwizard.DateChooser.onCreate(DateChooser.java:22)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at com.componentix.imwizard.DateChooser_.onCreate(DateChooser_.java:24)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at android.app.Activity.performCreate(Activity.java:5008)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
12-17 11:51:32.267: E/AndroidRuntime(3234):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
12-17 11:51:32.267: E/AndroidRuntime(3234):     ... 11 more
Was it helpful?

Solution

I guess your NPE is on textView and that's quite normal : layout injection is done in generated class after the original oncreate() method. Also, you should let AA inject extra and views for you. Just update your class like this :

@EActivity(R.layout.date_chooser)
public class DateChooser extends Activity {

    @Extra("SSID")
    String network;

    @ViewById(R.id.textView4)
    TextView textView;

    @AfterViews
    void init() {
        textView.setText(network);
        //some code   
    }

}

You should really take a closer look at the wiki

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top