titanium module java进阶: 在static方法中使用 non-static变量
访问量: 3151
我们可以很轻易的写出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); }