[英]Attempt to invoke virtual method on a null object reference in Android Studio
[英]Android Studio Bluetooth :- attempt to invoke a virtual method on a null object reference
我正在構建一個簡單的應用程序,該應用程序可以打開設備的藍牙並將其設置為可見。
我有一個單獨的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:致命例外:主進程:com.ai.mark.robot_dancing,PID:21314 java.lang.NullPointerException:嘗試調用虛擬方法'android.app.ActivityThread $ ApplicationThread android.app.ActivityThread.getApplicationThread()'在android.support.v4.app.FragmentActivity的android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)的android.app.Activity.startActivityForResult(Activity.java:3951)上引用空對象。 android.app.Activity.startActivityForResult(Activity.java:3912)(位於android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859)(位於com.ai.mark.robot_dancing)上的startActivityForResult(FragmentActivity.java:77) .com.ai.mark.robot_dancing.Bluetooth_Panel $ .onClick(Bluetooth_Panel.java:146)上的android.view.View.performClick(View.java:5210)上的.Bluetooth_API.bluetooth_ON(Bluetooth_API.java:20) android.os.Handler.handleCallback的.View $ PerformClick.run(View.java:21328) (Handler.java:739)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper.java:148)在android.app.ActivityThread.main(ActivityThread.java: 5551)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:730)的java.lang.reflect.Method.invoke(本機方法)(在com.android.internal.os.ZygoteInit.main( ZygoteInit.java:620)
關於什么原因的任何想法? 謝謝。
不要在Activity
構造函數中調用此類代碼:
blueAdp = BluetoothAdapter.getDefaultAdapter();
為此使用onCreate(android.os.Bundle)
:
@Override
protected void onCreate(Bundle savedInstanceState) {
blueAdp = BluetoothAdapter.getDefaultAdapter();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.