Larry Jing
Larry Jing

Reputation: 404

Display java string in xml textview

This is my following java code, question is the xml id. For some reason I keep on getting null whenever I try to print it out, is something wrong?

public class MainActivity extends AppCompatActivity{

private boolean correct;
private String questionTxt;

public int correctAnswer()
{
    int first = (int)(Math.random() * 10);
    int second = (int)(Math.random() * 10);
    int answer = first + second;
    questionTxt = first + " + " + second;
    return answer;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

    TextView questionText = (TextView)findViewById(R.id.question);
    questionText.setText(questionTxt + "");
}

xml code, just regular textview:

 <TextView
    android:id="@+id/question"
    android:background="@color/colorAccent"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:gravity="center"
    android:layout_above="@+id/option1"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="11dp"
    android:screenOrientation="portrait"/>

Upvotes: 0

Views: 600

Answers (2)

John Joe
John Joe

Reputation: 12803

You should move the method after onCreate

   public class MainActivity extends AppCompatActivity{

    private boolean correct;
    private String questionTxt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
        TextView questionText = (TextView)findViewById(R.id.question);
        int answer = correctAnswer();
        questionText.setText(answer+");

    }

    public int correctAnswer()
    {
        int first = (int)(Math.random() * 10);
        int second = (int)(Math.random() * 10);
        int answer = first + second;
        questionTxt = first + " + " + second;
        return answer;
    }
 }

Upvotes: 0

Rudresh
Rudresh

Reputation: 751

call this method correctAnswer(); before setting value into textview

public class MainActivity extends AppCompatActivity{

private boolean correct;
private String questionTxt;

public int correctAnswer()
{   
int first = (int)(Math.random() * 10);
int second = (int)(Math.random() * 10);
int answer = first + second;
questionTxt = first + " + " + second;
return answer;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

correctAnswer();
TextView questionText = (TextView)findViewById(R.id.question);
questionText.setText(questionTxt + "");
}

Upvotes: 1

Related Questions