我正在尝试在我创建的库中使用usbmanager。
在我的图书馆,我有:
public class usb_manager extends Service{
private UsbManager myUsbManager;
public usb_manager(){
myUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
}
}
...
}
然后我试图在另一个java文件中调用构造函数
public class MainActivity extends Activity {
public usb_manager testusb = new usb_manager();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
...
}
应用程序启动时崩溃。
但如果我将库中的代码更改为,(即将usbmanager的初始化移动到活动中):
public class usb_manager extends Service{
private UsbManager myUsbManager;
public usb_manager(UsbManager in){
mUsbManager = in;
}
...
}
在我的程序的MainActivity中:
public class MainActivity extends Activity {
public usb_manager testusb; = new usb_manager();
private UsbManager myUsbManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
testusb = new usb_manager(myUsbManager);
}
...
}
它有效。
任何人都可以告诉我使用的问题是什么 myUsbManager =(UsbManager)getSystemService(Context.USB_SERVICE);
在库文件中。
答案 0 :(得分:0)
简单getSystemService()
在构造函数中返回null
,因为Context
未被初始化。覆盖onCreate()
服务中的usb_manager
并在其中指定myUsbManager
。
并且不要在Activity
中使用startService()
来调用服务构造函数。