public class Mouse extends Activity{
private WindowManager mWM;
private ImageView ivCursor;
private WindowManager.LayoutParams mParams;
private int a,b;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
public void mouse(){
mWM= (WindowManager) this.getBaseContext().getSystemService(Context.WINDOW_SERVICE);
ivCursor= new ImageView(getBaseContext());
ivCursor.setImageResource(com.example.jarmouse.R.drawable.ic_launcher);
mParams = new WindowManager.LayoutParams();//对ivCursor对象的参数描述对象
mParams.height = WindowManager.LayoutParams.WRAP_CONTENT;//宽度自适应
mParams.width = WindowManager.LayoutParams.WRAP_CONTENT;//高度自适应
mParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;//设置成不能获取焦点
mParams.type = LayoutParams.TYPE_PHONE;
//设置图片格式,效果为背景透明
mParams.format = PixelFormat.RGBA_8888;
mParams.gravity = Gravity.LEFT | Gravity.TOP;
mParams.x = 0;//相对于屏幕原点的x轴距离
mParams.y = 0;//相对于屏幕原点的y轴距离
mWM.addView(ivCursor, mParams);
}
当我把这段代码打包成jar 然后去调用mouse()这个方法的时候这两个会出现空指针异常 mWM= (WindowManager) this.getBaseContext().getSystemServic(Context.WINDOW_SERVICE);
ivCursor= new ImageView(getBaseContext());
把mouse()方法里的这段代码放到 oncreat方法中的时候就没问题
但是这样的话在引用这个jar包的程序虽然能正常运行 就是没有显示出一个浮动框
首先尽量不要将包含有界面的性质的代码打成jar包,用起来可能很不爽,而且你需要解决很多问题。可以利用的其他方式包括将工程作为libary或者通过android studio打成aar。
再说题主的问题,因为题主是定义了一个Activity,但是Activity是作为jar包里面的代码。
1.题主在自己的activity去调用了另外一个Activity的方法,而方法是让这个Activity去window里面显示一个View。
而window里面需要context对象,对象的来源是jar包里面的Activity,而Activity没有建立在正确的生命周期中,Activity那么就只是被当作了一般的类,那么context对象自然不会存在,肯定会错误。
2.题主直接去调用jar包里面的Activity,比如跳转到这个Mouse里面去,那么Activity就进行了正确的生命周期流程,那么就会去执行onCreate方法,那么就需要将mouse()方法放入onCreate里面去执行,否则并不会执行mouse()这个方法
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。