androidnullpointerexceptionviewanimator

ViewAnimator causes NullPointerException


Hey i'm trying to use ViewAnimator and i probably am missing something basic. This is what i have :

        va = new ViewAnimator(this);
    va.setInAnimation(inFromLeftAnimation());
    va.setOutAnimation(outToRightAnimation());

    RelativeLayout stage = (RelativeLayout)findViewById(R.layout.american_stage);
    va.addView(stage,0);


    setContentView(va);

Where inFromLeftAnimation and outToRightAnimation just handles animations and works perfectly. And ofcourse that the file really exists... I Get this log :

   07-13 15:45:14.515: E/AndroidRuntime(564): java.lang.RuntimeException: Unable to start activity ComponentInfo{shibby.webhunt/shibby.webhunt.ArcadeModeActivity}: java.lang.NullPointerException
07-13 15:45:14.515: E/AndroidRuntime(564):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
07-13 15:45:14.515: E/AndroidRuntime(564):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-13 15:45:14.515: E/AndroidRuntime(564):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-13 15:45:14.515: E/AndroidRuntime(564):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-13 15:45:14.515: E/AndroidRuntime(564):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-13 15:45:14.515: E/AndroidRuntime(564):  at android.os.Looper.loop(Looper.java:123)
07-13 15:45:14.515: E/AndroidRuntime(564):  at android.app.ActivityThread.main(ActivityThread.java:4627)
07-13 15:45:14.515: E/AndroidRuntime(564):  at java.lang.reflect.Method.invokeNative(Native Method)
07-13 15:45:14.515: E/AndroidRuntime(564):  at java.lang.reflect.Method.invoke(Method.java:521)
07-13 15:45:14.515: E/AndroidRuntime(564):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-13 15:45:14.515: E/AndroidRuntime(564):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-13 15:45:14.515: E/AndroidRuntime(564):  at dalvik.system.NativeStart.main(Native Method)
07-13 15:45:14.515: E/AndroidRuntime(564): Caused by: java.lang.NullPointerException
07-13 15:45:14.515: E/AndroidRuntime(564):  at android.view.ViewGroup.addView(ViewGroup.java:1815)
07-13 15:45:14.515: E/AndroidRuntime(564):  at shibby.webhunt.ArcadeModeActivity.onCreate(ArcadeModeActivity.java:25)
07-13 15:45:14.515: E/AndroidRuntime(564):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-13 15:45:14.515: E/AndroidRuntime(564):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

And i have no idea why. Is it impossible to use XML files as views? do i have to build the views myself?


Solution

  • 07-13 15:45:14.515: E/AndroidRuntime(564): Caused by: java.lang.NullPointerException
    07-13 15:45:14.515: E/AndroidRuntime(564):  at android.view.ViewGroup.addView(ViewGroup.java:1815)
    

    It looks like you are trying to add a View (RelativeLayout stage) that is null, I don't believe you can load a layout with findViewById():

    findViewById(R.layout.american_stage);
    

    If you are trying to open a non-visible layout in american_stage.xml, use a LayoutInflater:

    LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);  
    stage = layoutInflater.inflate(R.layout.american_stage, null);  
    

    Or if you are trying to load an already visible RelativeLayout:

    1) Give the RelativeLayout the id american_stage

    <RelativeLayout 
        android:id="@+id/american_stage"
        ...
    

    2) And use:

    findViewById(R.id.american_stage);