为什么 Toast.setGravity() 不起作用

Why Toast.setGravity() is not working

大家好,我有 2 个这样的 Toast 版本

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

你们能解释一下吗

Toast.makeText(this, getString(R.string.back_not_allowed), Toast.LENGTH_SHORT) returns 一个 Toast 实例,因此您可以在其上调用 show() 函数,但是 Toast.makeText(this, getString(R.string.back_not_allowed), Toast.LENGTH_SHORT).show() returns void 所以你不能在它上面使用 setGravity(Gravity.CENTER,0,0) 。这就是你必须在变量中获取 Toast 的实例然后使用它的原因。

我只是在尝试完成书中的扩展挑战时尝试这样做,Android Programming: The Big Nerd Ranch

然后查了下官方文档,发现现在忽略了

official docs 开始,当 运行 在较新的 Android 版本上时,这是一个 no-op(无操作)。

这些是自最初 post 以来发生的变化。