我在Android Studio 1.4 beta 4中创建了一个新的Android项目。我刚刚将org.altbeacon:android-beacon-library:2.5.1
添加到Gradle,并添加了一行:
private BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
到onCreate()
如下:
public class MainActivity extends AppCompatActivity {
protected static final String TAG = "BeaconActivity";
private BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
}
添加此项并运行后,发生以下RuntimeException并且应用程序已崩溃:
java.lang.RuntimeException:无法实例化活动ComponentInfo {com.example.test / com.example.test.MainActivity}:java.lang.NullPointerException:尝试调用虚拟方法'android.content.pm.PackageManager android空对象引用上的.content.Context.getPackageManager()'
我没有明显使用上述代码。我该如何解决这个问题?
答案 0 :(得分:1)
你的错误在这里:
private BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
您试图通过BeaconManager
从"this"
创建一个对象,但此活动不是由系统创建的,而是由您创建的。因此,此InstalledApp对象没有将Context对象绑定到系统。
试试这个:
private BeaconManager beaconManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.bind(this);
}