我已经写了一些Android应用,并一直宣称起始Activity
为:Android应用程序VS活动
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
这将是伟大的作用域一些全局方法,静态,共享的首选项,等等,如果我可以使用Application
启动我的应用程序,然后在设置首选项等后调用onCreate()
中的第一个Activity
,但我一直无法找到此设计模式的任何示例......当我在代码中尝试此操作时, a ClassCastException
:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// do stuff (prefs, etc)
// start the initial Activity
Intent i = new Intent(this, InitialActivity.class);
startActivity(i);
}
}
InitialActivity.class
确实是一个Activity
,如果我将它设置为MAIN
,但是尝试从MyApplication
开始,它会声明MAIN
生成错误,该工作正常。可能是一个非常愚蠢的问题,但我解决这一切都是错误的?
感谢,
保罗
你的意思是你将MyApplication定义为Activity?这确实会导致ClassCastException。 令人高兴的是,如果我正确理解你想要做什么,Android已经为你做了你想做的事情。您只需将您的应用程序的名称设置为该MyApplication的路径和名称即可。它将在您的活动开始之前创建,并将供所有人使用。像这样:
有趣 - 我将如何从其中一个活动访问应用程序的自定义方法? –
从你的Activity中你可以得到一个对应用程序的句柄:getApplicationContext(),如果它在你的清单中被配置成如上所示的结果,将会转换为MyApplication。 –