使用invoke调用的方法里面获取不到控件的实例

云鹏 2014-03-22 10:50:54
我主要是想做一个蓝牙连接的一个jar包,在使用jar包的时候尽量不在activity写太多的代码,原来是用的广播,但是在activity这边要写接收器,代码比较多,我写了一个接口,让activity实现这个接口,然后在jar包代码里面调用接口的方法,用jar包开发的人只需要在接口的方法里面写要处理的数据就行

这是我的项目结构


这是我的invoke方法
public void runMethod(String className, String methodName) {

Class<?> clz = null;
Method m = null;
Object o = null;
try {
clz = Class.forName(className);
o = clz.newInstance();
m = clz.getMethod(methodName);
m.invoke(o);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}


我在BTManager里面调用Mainactivity里面的方法,在其他地方是可以获取控件的,但是在invoke调用的方法里面获取不到,加上static就行,但是控件比较多,不能全都用static吧?

不知道是代码问题还是什么问题,求指教...log报的是警告
03-22 10:49:40.171: W/System.err(6262): java.lang.reflect.InvocationTargetException
03-22 10:49:40.171: W/System.err(6262): at java.lang.reflect.Method.invokeNative(Native Method)
03-22 10:49:40.171: W/System.err(6262): at java.lang.reflect.Method.invoke(Method.java:525)
03-22 10:49:40.176: W/System.err(6262): at com.makeblock.bluetooth.BTManager.runMethod(BTManager.java:352)
03-22 10:49:40.176: W/System.err(6262): at com.makeblock.bluetooth.BTService$BluetoothReciever.onReceive(BTService.java:100)
03-22 10:49:40.176: W/System.err(6262): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768)
03-22 10:49:40.176: W/System.err(6262): at android.os.Handler.handleCallback(Handler.java:730)
03-22 10:49:40.176: W/System.err(6262): at android.os.Handler.dispatchMessage(Handler.java:92)
03-22 10:49:40.176: W/System.err(6262): at android.os.Looper.loop(Looper.java:137)
03-22 10:49:40.176: W/System.err(6262): at android.app.ActivityThread.main(ActivityThread.java:5419)
03-22 10:49:40.176: W/System.err(6262): at java.lang.reflect.Method.invokeNative(Native Method)
03-22 10:49:40.176: W/System.err(6262): at java.lang.reflect.Method.invoke(Method.java:525)
03-22 10:49:40.176: W/System.err(6262): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
03-22 10:49:40.176: W/System.err(6262): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
03-22 10:49:40.176: W/System.err(6262): at dalvik.system.NativeStart.main(Native Method)
03-22 10:49:40.176: W/System.err(6262): Caused by: java.lang.NullPointerException
03-22 10:49:40.176: W/System.err(6262): at android.app.Activity.findViewById(Activity.java:1914)
03-22 10:49:40.176: W/System.err(6262): at com.makeblock.appcontroller.AppControllerActivity.FoundNewDevice(AppControllerActivity.java:204)
03-22 10:49:40.176: W/System.err(6262): ... 14 more

...全文
165 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
云鹏 2014-03-22
  • 打赏
  • 举报
回复
	@Override
	public void FoundNewDevice() {
		// TODO Auto-generated method stub
		if (mListView==null) {
			mListView=(BTListView) findViewById(R.id.listView);
			Log.e("app", "mListView=null");
		}
		 mListView.update();
         mRefreshLayout.setVisibility(View.GONE);
	}
这里也尝试了实例一次,也是null

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧