从android中的静态方法调用非静态方法

我试图从静态方法调用非静态方法,但没有任何结果,我的应用程序工作崩溃我的代码:

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setAuth(); /// /// } public static void setAuth() { new MainActivity().d(); } public void d() { Toast.makeText(getApplicationContext(), "fff",Toast.LENGTH_SHORT).show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

是否允许从android中的静态方法调用非静态方法? 如何???

必须能够在不引用类的实例化的情况下执行类中的静态方法:

 class MyClass { int information; static int usefulNumber = 72; int method() { return information; } static int methodStatic() { // Cannot refer to information // But can refer to usefulNumber } } 

因此,根据定义,它不能在类中执行非静态方法,因为该方法不存在,除非,如@RhinoFeeder所说,您已实例化该类并将该实例化传递给静态类:

  static int methodStatic2(MyClass myClass) { return myClass.method(); } 

执行此操作的唯一方法是,您可以访问包含非静态方法的类的实例。

编辑:我意识到这个答案听起来很空,没有进一步的解释,因为你做了一个新的MainActivity

new MainActivity().d();

无法在Android中运行,因为您无法以这种方式创建新的Activity。

 public static void setAuth(MainActivity activity) { activity.d(); } 

那很简单。

new MainActivity().d(); 调用另一个活动实例的方法。