2016-10-03 9 views
0

好傢伙我有2個版本的吐司這樣爲什麼Toast.setGravity()不工作

版本1:

Toast.makeText(getApplicationContext(),"hello",Toast.LENGTH_LONG).setGravity(Gravity.CENTER,0,0).show(); 

版本2:

Toast t = Toast.makeText(getApplicationContext(),"hello",Toast.LENGTH_LONG); 
     t.setGravity(Gravity.CENTER,0,0); 
     t.show(); 

第2個工作正常但版本1不是。 它給錯誤無法解析方法show()。 這裏怎麼回事?

當我寫第1版刪除setGravity()方法,然後正常工作

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

你們可以解釋它。

+1

因爲setGravity不返回吐司類型。 –

+0

你能否詳細解釋一下。爲什麼t.setgravity()可以工作,但版本1不行。 –

+2

因爲makeText的返回類型是Toast,所以你可以訪問Toast類的靜態方法。但setGravity的返回類型爲void。 –

回答

4

Toast.makeText(this, getString(R.string.back_not_allowed), Toast.LENGTH_SHORT)返回Toast實例,以便您可以調用它的show()功能,但Toast.makeText(this, getString(R.string.back_not_allowed), Toast.LENGTH_SHORT).show()回報void所以你不能使用setGravity(Gravity.CENTER,0,0)了它。這就是您必須將Toast的實例存入變量然後使用它的原因。