Java 在android中从静态方法调用非静态方法

Java 在android中从静态方法调用非静态方法,java,android,static,Java,Android,Static,我试图从静态方法调用非静态方法,但没有任何结果,我的应用程序崩溃了 我的代码: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main)

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

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中从静态方法调用非静态方法??
如何实现呢?

唯一的方法是访问包含非静态方法的类的实例

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

newmainActivity().d()


无法在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();
    }
那很简单


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

发布崩溃错误日志!首先,对于活动,您不能执行
newmainActivity()
。我想你的主要任务是敬酒。因此,将上下文对象作为PARAM传递给SET Author(),并使用上下文对象显示您的ToStube。在尝试使Android App.代码不是从我的应用程序之前,您应该考虑花更多的时间在简单java编程上,我尝试了简单的代码,如果代码工作,然后诚实地更改我的应用程序,我会一起放弃这个设计。我会让setAuth接受一个
上下文
,并使用该上下文在该方法中创建Toast,将
d()
全部删除。如果你已经开始使用现在的设计,@NeilTownsend提供了一个可靠的答案。好的,尝试从onCreate方法调用d()方法,并删除对静态方法的调用。检查这是否是导致坠机的真正原因。因为我不相信是这样。
public static void setAuth(MainActivity activity) {
       activity.d();
}