-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 に答える