2013-12-18 1 views
3

Я хочу показать тост-сообщение из потока, который работает на UiThread, однако, похоже, Runnable правильно не ссылается на мой вызов. Пожалуйста, смотрите мою очень простую реализацию ниже:Показать сообщение Toast изнутри uiThread Runnable?

this.runOnUiThread(new Runnable() { 
    public void run() { 
       Toast.makeText(this, "Authenticated.", Toast.LENGTH_SHORT).show(); 
      } 
     } 
); 

Я считаю, что это не является фактическим работоспособным, что функция makeText требует. Как бы вы получили фактический Runnable в этом случае?

+0

'this' ссылается на контекст действия ?. – Raghunandan

+1

лучше попробуйте yourclass.this –

+3

используйте 'YourActivity_Name.this' вместо' this', потому что 'this' ссылаются на контекст метода выполнения вместо Activity –

ответ

2

не использовать ключевое слово this, наилучшей практикой является создание контекстной переменной и ее инициализация в методе onCreate и использование каждого из них в вашей деятельности.

Context context; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layoutname); 
    context=this; 
} 

теперь использовать его как это:

this.runOnUiThread(new Runnable() { 
    public void run() { 
       Toast.makeText(context, "Authenticated.", Toast.LENGTH_SHORT).show(); 
      } 
     } 
); 

в вашем случае, это относится к работоспособный класса не Context. поэтому вы можете использовать context для toast

2

использование этого

this.runOnUiThread(new Runnable() { 
    public void run() { 
       Toast.makeText(youractivityname.this, "Authenticated.", Toast.LENGTH_SHORT).show(); 
      } 
     } 
); 

this относится к классу работоспособный а не context. поэтому вы можете использовать activityname.this

 Смежные вопросы

  • Нет связанных вопросов^_^