【发布时间】:2012-04-26 12:23:31
【问题描述】:
我有一个扩展应用程序的类,我想从代码中调用它,它有
@Override
public void onCreate()
我需要从 Activity 中调用它。我知道如何在应用启动时调用它,因为我需要将其包含在清单中:
android:name=""
谢谢。
【问题讨论】:
标签: android
我有一个扩展应用程序的类,我想从代码中调用它,它有
@Override
public void onCreate()
我需要从 Activity 中调用它。我知道如何在应用启动时调用它,因为我需要将其包含在清单中:
android:name=""
谢谢。
【问题讨论】:
标签: android
您应该避免手动调用应用程序 onCreate,因为如果配置正确,它将自动启动。但是,如果您想从覆盖的应用程序中调用方法,您可以这样做:
public class MyApplication extends Application{
public void someMethod(){}
}
然后在任何 Activity 中:
MyApplication app = (MyApplication)getApplication()
app.someMethod();
【讨论】:
试试这个:
public class YourApplication extends Application
{
public void sayHello {
System.out.println("Hello")
}
}
然后在任何活动中调用它:
YourApplication appState = ((YourApplication)this.getApplication());
appState.sayHello();
【讨论】:
应用程序类onCreate() 在应用程序启动时被调用。如果你想调用你在 Application 类中声明的方法,你可以这样调用它,
((Application_Class_Name)getApplicationContext()).calling_method();
从任何其他扩展 Activity 的类,否则您必须使用上下文来获取 getApplicationContext() 的实例以从非 Activity 类调用。
例如-如果你想从Adapter类调用它,你需要将Activity的上下文传递给adapter类并获取Application的实例,
((Application_Class_Name)mContext.getApplicationContext()).calling_method();
【讨论】:
从Activity,您只需致电((YourAppName)getApplicationContext())。
而且,您的Application 中不需要onCreate()(除非您知道自己需要)。您可以在那里设置一些方法,然后使用例如调用它们((YourAppName)getApplicationContext()).myMethod()。只要它的任何 Activity 存在,您的应用就一直存在。
【讨论】:
getApplicationContext() 返回的结果与getApplication 相同吗?
您不应该自己调用onCreate() 方法...Android 会为您完成...此类的主要目的是保持全局变量对整个应用程序的通用性,因为Application 本身是一个实例。 ..
它可以让你覆盖onCreate(),因为你可能需要在操作系统创建的应用程序/活动中自定义东西..
【讨论】: