Piotr Curie
Piotr Curie

Reputation: 47

Dynamically created TextViews in Java - NullPointerException

I try to add dinamically some TextViews in Java. I assume that when I want to use setText() method, I should earlier connect my Java's TextView object with XML's TextView - I use setId().

At the end, I got NullPointerException in the line where I use setId().

My code:

TextView[] tvQuestion = new TextView[numberOfQuestions];
TextView[] tvAnswer1 = new TextView[numberOfQuestions];
TextView[] tvAnswer2 = new TextView[numberOfQuestions];
TextView[] tvAnswer3 = new TextView[numberOfQuestions];

LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT);

for (int i = 0; i < numberOfQuestions; i++) {
    tvQuestion[i].setId(View.generateViewId()); // NullPointerException!
    tvAnswer1[i].setId(View.generateViewId());
    tvAnswer2[i].setId(View.generateViewId());
    tvAnswer3[i].setId(View.generateViewId());

    tvQuestion[i].setLayoutParams(params);
    tvAnswer1[i].setLayoutParams(params);
    tvAnswer2[i].setLayoutParams(params);
    tvAnswer3[i].setLayoutParams(params);

    tvQuestion[i].setText(question[i]);
    tvAnswer1[i].setText(option1[i]);
    tvAnswer2[i].setText(option2[i]);
    tvAnswer3[i].setText(option3[i]);

    layAll.addView(tvQuestion[i]);
    layAll.addView(tvAnswer1[i]);
    layAll.addView(tvAnswer2[i]);
    layAll.addView(tvAnswer3[i]);
}

EDIT:

Solution: Philipp Jahoda's post.

Upvotes: 1

Views: 271

Answers (1)

Philipp Jahoda
Philipp Jahoda

Reputation: 51411

You just created an Array for the TextViews. The TextViews inside the Array are null as long as they are not initialized.

So you need to call

tvQuestion[i] = new TextView(Context);
tvAnswer[i] = new TextView(Context);
// and so on ...

// and then later
tvQuestion[i].setId(View.generateViewId());
// and so on ...

before setting the ID and other stuff.

Upvotes: 3

Related Questions