1

I found Null Pointer Exception in my Layout file.

I am using ViewPager for whatever reason I found NullPointerException.

Following is xml code for layout.

<?xml version="1.0" encoding="utf-8"?>
<com.mindsoulmatter.iaffirmme.ViewPagerParallax xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/viewpager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#70000000"
    android:paddingBottom="2dp"
    android:textColor="#D7D6D6" >

    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/__Weekly_pager_title_strip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="#70000000"
        android:paddingTop="18dp"
        android:textColor="#FFFFFF"
        android:textSize="26sp" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#ffffff" />

</com.mindsoulmatter.iaffirmme.ViewPagerParallax>

I got following error in graphical layout:

java.lang.NullPointerException
Exception details are logged in Window > Show View > Error Log

java.lang.NullPointerException
    at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1083)
    at android.graphics.Canvas.drawBitmap(Canvas.java:1201)
    at com.mindsoulmatter.iaffirmme.ViewPagerParallax.onDraw(ViewPagerParallax.java:204)
    at android.view.View.draw(View.java:14465)
    at android.support.v4.view.ViewPager.draw(ViewPager.java:2171)
    at android.view.View.draw(View.java:14350)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
    at android.view.View.draw(View.java:14348)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
    at android.view.View.draw(View.java:14468)
    at android.view.View.draw(View.java:14350)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
    at android.view.View.draw(View.java:14468)

I can run the application but when I open this layout application get crashed.

This layout is called by using following fragment activity:

package com.mindsoulmatter.iaffirmme;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Vector;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.Window;
import android.widget.TextView;

public class Activity_Fragments extends FragmentActivity {
    List<Fragment> fragments;
    Adapter_ViewPager adapter;
    ViewPagerParallax pager;
    String restoredText;
    private static String[] titles = new String[] { "Custom", "Affirmations",
            "Favorites" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.adapter_fragment);
        RateThisApp.onStart(this);
        // Show a dialog if criteria is satisfied
        RateThisApp.showRateDialogIfNeeded(this);

        overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
        fragments = new Vector<Fragment>();
        fragments.add(Fragment.instantiate(this,
                Fragment_Affirm_Custom.class.getName()));
        fragments.add(Fragment.instantiate(this,
                Fragment_Affirm.class.getName()));
        fragments.add(Fragment.instantiate(this,
                Fragment_Affirm_Favourites.class.getName()));

        // registerReceiver(broadcastCoverReceiverpara, new IntentFilter(
        // Music_service.BROADCAST_COVERPARALLAX));

        SharedPreferences prefs = getApplicationContext().getSharedPreferences(
                "udata", MODE_PRIVATE);
        this.restoredText = prefs.getString("language", null);

        if (restoredText == "english") {
            titles = new String[] { "Custom", "Affirmations", "Favorites" };
        } else if (restoredText == "spanish") {
            titles = new String[] { "Costumbre", "Afirmaciones", "Favoritos " };
        } else if (restoredText == "french") {
            titles = new String[] { "Coutume", "Affirmations", "Favoris" };
        } else {
            titles = new String[] { "Custom", "Affirmations", "Favorites" };
        }

        adapter = new Adapter_ViewPager(super.getSupportFragmentManager(),
                fragments, titles);

        pager = (ViewPagerParallax) super.findViewById(R.id.viewpager);

        pager.set_max_pages(3);
        PagerTitleStrip _Title = (PagerTitleStrip) findViewById(R.id.__Weekly_pager_title_strip);
        Typeface font = Typeface.createFromAsset(this.getAssets(),
                "fonts/julius-sans-one.ttf");
        for (int counter = 0; counter < _Title.getChildCount(); counter++) {

            if (_Title.getChildAt(counter) instanceof TextView) {
                ((TextView) _Title.getChildAt(counter)).setTypeface(font);
            }
        }
        /*int arr[] = { R.raw.a1, R.raw.a2, R.raw.a3, R.raw.a4, R.raw.a5,
                R.raw.a6, R.raw.a7, R.raw.a8, R.raw.a9, R.raw.a10, R.raw.a11,
                R.raw.a12, R.raw.a13, R.raw.a14, R.raw.a15, R.raw.a16,
                R.raw.a17, R.raw.a18, R.raw.a19, R.raw.a20, R.raw.a21,
                R.raw.a22, R.raw.a23, R.raw.a24, R.raw.a25, R.raw.a26,
                R.raw.a27, R.raw.a28, R.raw.a29, R.raw.a30, R.raw.a31,
                R.raw.a32, R.raw.a33, R.raw.a34, R.raw.a35, R.raw.a36,
                R.raw.a37, R.raw.a38, R.raw.a39, R.raw.a40, R.raw.a41 };*/

        int arr[] = { R.raw.a1, R.raw.a2, R.raw.a3, R.raw.a4,R.raw.a5};

        int x = (int) (Math.random() * ((4) + 1));
        pager.setBackgroundAsset(arr[x]);
        // pager.setPageTransformer(true, new ZoomOutPageTransformer());

        pager.setAdapter(adapter);
        pager.setOffscreenPageLimit(1);

        pager.setCurrentItem(1);

    }

    // private BroadcastReceiver broadcastCoverReceiverpara = new
    // BroadcastReceiver() {
    // @Override
    // public void onReceive(Context context, Intent serviceIntent) {
    // pager.setBackgroundAsset(serviceIntent.getStringExtra( "coverpara"));

    // }
    // };

    @Override
    public void finish() {
        super.finish();
        overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);
    }
}

I get error when pager.setBackgroundAsset(arr[x]) is called.

can any body please help me?

3 Answers 3

2

I found solution.

There was a problem with images itself.

Some of the images are itself broken.

Thanks for the time guys.

Sign up to request clarification or add additional context in comments.

Comments

0

Looks like

int x = (int) (Math.random() * ((4) + 1));

is giving you bad id of the array

Comments

0

Custom View can detect if they are run inside the Layout Editor (within a developer tool) with this method:

View.isInEditMode()

Apparently, the ViewPagerParallax View isn't, and therefore is using illegal method inside the Layout Editor.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.