titanium module java进阶: 在static方法中使用 non-static变量
访问量: 3178
我们可以很轻易的写出java module, 运行 hello world, 但是光靠这个远远不够。
我们会面临很多情况,在Ti中调用 Android activity, context, 以及更高级的内容:
下面是个例子:
在 shareSDK 中,用到了android activity 的onCreate方法。 onError 方法。
比如:
public void onCreate() {
// 初始化ui
handler = new Handler(this);
activity.setContentView(R.layout.tpl_login_page);
(activity.findViewById(R.id.tvOther)).setOnClickListener(this);
}
在Titanium 的module中,提供的对应方法中,却是 static的:
@Kroll.onAppCreate
public static void onAppCreate(TiApplication app)
{
Log.d(LCAT, "inside onAppCreate");
ShareSDK.initSDK(app);
// 下面这句话会抛出异常:
//handler = new Handler(this);
}
android中是non-static, titanium module中是 static 方法,这就决定了,我们无法把native code 照搬过来,需要做一定的变换。
参考上面的URL:
// 先声明这个static 变量
private static TestTiModuleQqLoginModule myModule;
public TestTiModuleQqLoginModule()
{
super();
// 在 constructor中 初始化它。
myModule = this;
}
@Kroll.onAppCreate
public static void onAppCreate(TiApplication app)
{
// 然后就可以引用啦
handler = new Handler(myModule);
}