-1

我正在尝试在我创建的库中使用 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); 有什么问题?

在库文件中。

4

1 回答 1

0

由于未初始化,因此只需在构造函数中getSystemService()返回。覆盖您的服务并在那里分配。并且不要调用正在使用的服务构造函数。nullContextonCreate()usb_managermyUsbManagerActivitystartService()

请参阅此服务教程

于 2013-09-16T20:22:07.337 回答