【发布时间】:2016-11-15 10:40:01
【问题描述】:
我正在构建一个简单的应用程序,它会打开设备的蓝牙并将其设置为可见。
我有一个单独的 java 类文件,它具有我需要的蓝牙功能,这些是通过所述类的对象从链接到我的活动的另一个 java 类调用的。
这是我的代码:
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
/**
* Created by mark on 11/11/2016.
*/
public class Bluetooth_API extends AppCompatActivity{
BluetoothAdapter blueAdp;
public Bluetooth_API() {
blueAdp = BluetoothAdapter.getDefaultAdapter();
}
protected int bluetooth_ON() {
startActivityForResult(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), 0);
//blueAdp.enable(); //instead of above line - without alert dialog for permission
return 0;
}
protected int bluetooth_OFF() {
blueAdp.disable(); //
return 0;
}
protected int bluetooth_setVisible() {
if(!blueAdp.isDiscovering()) {
startActivityForResult(new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE), 0);
}
return 0;
}
}
这是调用我的函数的其他活动的代码部分:
scanButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent nextLayout = new Intent(getApplicationContext(), com.ai.mark.robot_dancing.Scanning_Devices.class);
startActivity(nextLayout);
blue.bluetooth_ON();
//blue.bluetooth_setVisible();
}
});
一旦我运行我的代码,我就会收到以下错误,我认为这与活动不是正确的活动有关,因为我的蓝牙功能在另一个文件中(我还尝试将方法复制到我的活动类,他们工作得很好)。
错误:
E/AndroidRuntime: 致命异常: main 进程:com.ai.mark.robot_dancing,PID:21314 java.lang.NullPointerException:尝试调用虚拟方法'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' 在一个空对象上 参考 在 android.app.Activity.startActivityForResult(Activity.java:3951) 在 android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48) 在 android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:77) 在 android.app.Activity.startActivityForResult(Activity.java:3912) 在 android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859) 在 com.ai.mark.robot_dancing.Bluetooth_API.bluetooth_ON(Bluetooth_API.java:20) 在 com.ai.mark.robot_dancing.Bluetooth_Panel$6.onClick(Bluetooth_Panel.java:146) 在 android.view.View.performClick(View.java:5210) 在 android.view.View$PerformClick.run(View.java:21328) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5551) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
关于造成这种情况的任何想法? 谢谢。
【问题讨论】:
标签: java android error-handling bluetooth