Java 为什么Toast.makeText(…)和toastObj.makeText(…)的运行方式不同?
我是新来的,如果这是一个糟糕的问题,我道歉。但是我想知道这两个版本的代码之间的区别 1) 这一个可以让烤面包瞬间改变Java 为什么Toast.makeText(…)和toastObj.makeText(…)的运行方式不同?,java,android,Java,Android,我是新来的,如果这是一个糟糕的问题,我道歉。但是我想知道这两个版本的代码之间的区别 1) 这一个可以让烤面包瞬间改变 public Toast toast; public void showToast(String text) { if (toast != null) { toast.cancel(); } toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG
public Toast toast;
public void showToast(String text)
{
if (toast != null)
{
toast.cancel();
}
toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG);
toast.show();
}
public Toast toast;
public void showToast(String text)
{
if (toast != null)
{
toast.cancel();
}
toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();
}
2) 这个不会瞬间改变
public Toast toast;
public void showToast(String text)
{
if (toast != null)
{
toast.cancel();
}
toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG);
toast.show();
}
public Toast toast;
public void showToast(String text)
{
if (toast != null)
{
toast.cancel();
}
toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();
}
为什么它必须是Toast class.makeText而不是Toast object.makeText?
还是因为show()方法必须分开?
我还不熟悉Java和Android,有人能解释一下两者的根本区别吗?提前感谢。这是因为makeText()来自Toast类,该类作为
import android.widget.Toast;
因此,它是一个静态方法,因此需要通过类名调用它
及
不必分开
所以
将起作用。实际上makeText()
方法的Toast
类是一个静态方法
因此,如果我们必须访问一个静态方法,我们必须通过ClassName.method()
调用该方法
在这里,我们还在Toast类中进行操作,因为
makeText()
是一个静态方法。fyi,if将永远不会被输入,即“Toast”将始终为null。它已声明但未实例化。如何toast!=null
一旦通过,它将始终为null。还有,这是如何使你的应用程序不会崩溃的,因为它应该是makeText()
声明为静态的,[参见文档](,int,int),所以它没有被类的实例化引用。Oops感谢你指出,Toast声明实际上是全局的,已经做出了可能的更改,与Beat me的重复。基本上,静态/命名空间与instance@oooyaya是:)据我所知,对象仍然可以调用静态方法,但为什么它不能以相同的方式运行呢?