我想制作一个重力设置为TOP的吐司,我编写了这段代码
Toast.makeText(MainActivity.this, R.string.incorrect_text,Toast.LENGTH_SHORT).setGravity(Gravity.TOP,0,0).show();
但是令我惊讶的是,Android Studio给了我一个错误。 请在这里
看看查阅文档后,我想到了这段代码,它可以很好地工作
Toast toast = Toast.makeText(MainActivity.this, R.string.incorrect_text,Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP,0,0);
toast.show();
还在工作
Toast.makeText(MainActivity.this, R.string.incorrect_text,Toast.LENGTH_SHORT).show();
为什么这样做有效,而我的第一个代码却无效?有什么区别?
从收集到的答案中进行编辑确定,setGravity返回void,但这是为什么呢?不是
hello = somthg;
hello.world();
与
相同somthg.world();
?!
答案 0 :(得分:1)
类setGravity()
的方法Toast()
返回void
而不是Toast
对象。
这是它的签名:
public void setGravity(int gravity, int xOffset, int yOffset)
因此您无法致电show()
。
但这:
toast.setGravity(Gravity.TOP,0,0);
是有效的调用,然后您在Toast对象上调用show()
:
toast.show();
答案 1 :(得分:1)
您不能仅根据需要进行链接,而只能在所有方法返回链接所需的类型时使用。在您的情况下,setGravity()
是无效的(很愚蠢):
public void setGravity (int gravity,
int xOffset,
int yOffset)
通常,您应该始终阅读《搞笑手册》
答案 2 :(得分:0)
toast.setGravity()
可悲的是没有返回Toast:
public static void setGravity(...)
在您的第一个Toast中,您试图show()
无效,这是不可能的。
您必须按照问题中的说明分别进行操作。每次执行.something()
时,您都使用前一个.something()
的输出,而不是本例中makeText(...)
的原始输出。