ошибка при отображении тоста - PullRequest
8 голосов
/ 28 февраля 2012

Я пытаюсь запустить тост по очереди, чтобы отобразить руссирующий RSS-канал. Я получаю следующую ошибку при запуске: java.lang.RuntimeException: этот тост не был создан с Toast.makeText ()

Мой код:

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_layout,
                               (ViewGroup) findViewById(R.id.toast_layout_root));

ImageView image = (ImageView) layout.findViewById(R.id.toastimage);
image.setImageResource(R.drawable.bball_icon);
TextView text = (TextView) layout.findViewById(R.id.toasttext);

Toast toast = new Toast(getApplicationContext());
toast.setView(layout);
for (int i=0;i<episode_titles.size();i++)
{
    toast.setText(episode_titles.get(i).toString());
    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
    toast.setDuration(Toast.LENGTH_SHORT);

    toast.show();

}

Ответы [ 9 ]

18 голосов
/ 04 сентября 2013

Чтобы установить текст для тоста, вы должны инициализировать его с помощью makeText.

Как это:

    Toast toast = Toast.makeText(this, "message", Toast.LENGTH_SHORT);
    toast.setText("new message");
    toast.setGravity(Gravity.CENTER, 0, 0);
    //other setters
    toast.show();
4 голосов
/ 28 февраля 2012

Вы можете вызвать toast.SetText () , только если вы ранее создали тост, используя один из методов makeText . Смотрите документацию метода: http://developer.android.com/reference/android/widget/Toast.html#setView(android.view.View)

В вашем примере вы должны обновить текст, используя TextView вместо Toast

2 голосов
/ 28 февраля 2012

Вы можете использовать это

for (int i=0;i<episode_titles.size();i++)
{
    Toast.makeText(getApplicationContext(), episode_titles.get(i).toString(), Toast.LENGTH_LONG).show();
}
2 голосов
/ 28 февраля 2012

Toast U может указывать вот так ...

  Toast.makeText(getApplicationContext(), "hai", Toast.LENGTH_LONG).show();

Тогда ты можешь писать вот так ...

       String s=episode_titles.get(i).toString();
      Toast.makeText(getApplicationContext(), "UrMessage:"+s, Toast.LENGTH_LONG).show();
1 голос
/ 06 сентября 2013

Вместо toast.setText(episode_titles.get(i).toString()); используйте text.setText();.

1 голос
/ 28 февраля 2012
Toast.makeText(getApplicationContext(), "your text", Toast.LENGTH_LONG).show();  

Это работает для меня.

0 голосов
/ 18 июля 2019

Чтобы установить текст для тоста, вы должны использовать makeText.

Например:

Toast toast =  Toast.makeText (MainActivity.this,getString(R.string.noSearchMatch ) , LENGTH_SHORT );
      toast.setGravity ( Gravity.CENTER_VERTICAL, 0 , 0);
      toast.show ( );
0 голосов
/ 28 февраля 2012
Toast toast = new Toast(getApplicationContext());
//your for loop here    {   
        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
        toast.setDuration(Toast.LENGTH_LONG);
        TextView txt1 =  new TextView(this);
        txt1.setText(R.string.hello);
        toast.setView(txt1);
        toast.show();
    }
0 голосов
/ 28 февраля 2012

Попробуйте это:

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_layout,
                               (ViewGroup) findViewById(R.id.toast_layout_root));

ImageView image = (ImageView) layout.findViewById(R.id.toastimage);
image.setImageResource(R.drawable.bball_icon);
TextView text = (TextView) layout.findViewById(R.id.toasttext);

Toast toast = new Toast(getApplicationContext());
toast.setView(layout);
for (int i=0;i<episode_titles.size();i++)
{
    text.setText(episode_titles.get(i).toString());
    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
    toast.setDuration(Toast.LENGTH_SHORT);

    toast.show();

}

Дайте мне знать, если это работает:)

...