Qlak
Qlak

Reputation: 27

Placing String from strings.xml in the Toast Message

I'm currently finishing my game app for android, but I have encountered one problem that keeps crashing my app.

I was trying to place the text from strings.xml inside the toast message and my code looks like this:

    // THIS IS THE PART THAT DOES NOT WORK:
    int stringrank = getResources().getIdentifier("rank"+points, "string", this.getPackageName());
    rank = getString(stringrank);
    // I want to get different rank String depending on the collected points, 
    // so it would be rank1, rank2, rank3 and so on - thats why "rank"+points.
    // It worked for me in the different parts of the code, but when I want to
    // use it in the Toast Message it does not.


    LayoutInflater inflater = getLayoutInflater();
    View layout = inflater.inflate(R.layout.done_toast, (ViewGroup) findViewById(R.id.done_toast));
    TextView text = (TextView) layout.findViewById(R.id.text);
    // APP CRASHES when I use "rank" String here, if I place other text it works just fine.
    text.setText(rank);

    final Toast donetoast = new Toast(getApplicationContext());
    donetoast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 35);
    donetoast.setDuration(Toast.LENGTH_SHORT);
    donetoast.setView(layout);
    // Rest of the Toast Message code is below, not important.
    (...)

When I place the normal text in the Toast Message (does not matter whether in Java or in the done_toast.xml) it works perfectly, but if I want to call the String from strings.xml the app crashes.

Thank you for your help in advance!

Upvotes: 1

Views: 648

Answers (1)

Bertram Gilfoyle
Bertram Gilfoyle

Reputation: 10235

You can't create a Toast object like that. It must be done using Toast.makeText().

Try this

final Toast donetoast=Toast.makeText(getApplicationContext());
donetoast.setDuration(Toast.LENGTH_SHORT);
donetoast.setView(layout);

Upvotes: 1

Related Questions