Android一线吐司

时间:2019-04-28 12:08:10

标签: java android

我想制作一个重力设置为TOP的吐司,我编写了这段代码

Toast.makeText(MainActivity.this, R.string.incorrect_text,Toast.LENGTH_SHORT).setGravity(Gravity.TOP,0,0).show();

但是令我惊讶的是,Android Studio给了我一个错误。 请在这里enter image description here

看看

查阅文档后,我想到了这段代码,它可以很好地工作

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();

?!

3 个答案:

答案 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(...)的原始输出。