2013-12-18 106 views
3

我想在UiThread上運行的線程中顯示Toast消息,但是看起來Runnable在我的調用中未正確引用。請參閱我下面非常基本的實現:從uiThread Runnable中顯示Toast消息?

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關鍵字,最佳做法是創建Context變量並在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(); 
      } 
     } 
); 

你的情況,這指的是可運行沒有上下文。所以你可以使用contexttoast

2

使用本

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

this指運行的類不是context。因此您可以使用activityname.this