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