2016-04-05 11 views
0

私はBluetoothアプリケーションを作成しようとしています。 developer.androidの "guide"に従っていますが、私がgetRemoteDeviceにしようとするたびにアプリケーションがクラッシュします。何かが間違っているはずですが、私は何が分かりません。java.lang.RuntimeException:結果の配信に失敗しましたResultInfo {who = null、request = 1、result = -1、data =インテント{(エクストラ)}}アクティビティ

TribotActivity(onActivityResultクラス)

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_DEVICE_ADDRESS) {  // Check which request we're responding to. When doing more requests a switch case is probably a nicer way of doing this. 
     if (resultCode == RESULT_OK) { 
      connectDevice(data, true);// Make sure the request was successful 
     } else { 
      Toast.makeText(getApplicationContext(), "Failed to get MAC address from ", Toast.LENGTH_SHORT).show(); //TODO Remove this when we've successfully sent through the address 
     } 
    } 
} 

private void connectDevice(Intent data, boolean secure) { 
    // Get the device MAC address 
    String address = data.getExtras() 
      .getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS); 
    // Get the BluetoothDevice object 
    BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 
    // Attempt to connect to the device 
    mConnect.connect(device, secure); 
} 

DeviceListActivity

public static String EXTRA_DEVICE_ADDRESS = "device_address"; 

private AdapterView.OnItemClickListener mDeviceClickListener = new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) { 
     // Cancel discovery because it's costly and we're about to connect 
     mBtAdapter.cancelDiscovery(); 

     // Get the device MAC address, which is the last 17 chars in the View 
     String info = ((TextView) v).getText().toString(); 
     String address = info.substring(info.length() - 17); 

     // Create the result Intent and include the MAC address 
     Intent data = new Intent(); 
     data.putExtra(EXTRA_DEVICE_ADDRESS, address); 

     // Set result and finish(=close?) this Activity 
     setResult(RESULT_OK, data); 
     finish(); 
    } 
}; 

私の賭けは何とかデバイスがTribotActivityに送信取得していないということでしょう。 はここmBluetoothAdapterの宣言です、私は見ることができない私のlogcat :)

Logcat

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.hszuyd.noodle_.testing/com.hszuyd.noodle_.testing.TribotActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.bluetooth.BluetoothDevice android.bluetooth.BluetoothAdapter.getRemoteDevice(java.lang.String)' on a null object reference 
                      at android.app.ActivityThread.deliverResults(ActivityThread.java:3733) 
                      at android.app.ActivityThread.handleSendResult(ActivityThread.java:3776) 
                      at android.app.ActivityThread.-wrap16(ActivityThread.java) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:5461) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                      at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117) 
                     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.bluetooth.BluetoothDevice android.bluetooth.BluetoothAdapter.getRemoteDevice(java.lang.String)' on a null object reference 
                      at com.hszuyd.noodle_.testing.TribotActivity.connectDevice(TribotActivity.java:93) 
                      at com.hszuyd.noodle_.testing.TribotActivity.onActivityResult(TribotActivity.java:71) 
                      at android.app.Activity.dispatchActivityResult(Activity.java:6456) 
                      at android.app.ActivityThread.deliverResults(ActivityThread.java:3729) 
                      at android.app.ActivityThread.handleSendResult(ActivityThread.java:3776)  
                      at android.app.ActivityThread.-wrap16(ActivityThread.java)  
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412)  
                      at android.os.Handler.dispatchMessage(Handler.java:102)  
                      at android.os.Looper.loop(Looper.java:148)  
                      at android.app.ActivityThread.main(ActivityThread.java:5461)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
                      at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117)  

答えて

1

だが、それはメソッドを呼び出そうとしているので、例外スタック応じてヌルであると思われますnullオブジェクトのgetRemoteDevice()

+0

プライベートBluetoothAdapter mBluetoothAdapter; TribotActivityで – Remco1250

+0

私はあなたがBluetoothAdapter.getDefaultAdapter()を呼び出さなければならないと思います。宣言でmBluetoothAdapterにnull以外の値を設定する – Wakachopo

関連する問題

 関連する問題