Use “this” in static method in android
本问题已经有最佳答案,请猛点这里访问。
这是我的第一个Android应用程序,所以这可能是一个愚蠢的问题。所以,请考虑我是否犯了什么错误。
我正在构建一个与蓝牙相关的应用程序。
我的
1 2 3 4 5 6 7 8 | public void showDeviceListDialog() { BluetoothDeviceListDialog dialog = new BluetoothDeviceListDialog(this); dialog.setOnDeviceSelectedListener(this); dialog.setTitle("Paired Devices"); dialog.setDevices(bluetoothSerial.getPairedDevices()); dialog.showAddress(true); dialog.show(); } |
我需要从另一个片段调用这个方法。所以,当我这样调用这个方法:
我已经读过这样和这样的文章,但我没有得到关于我的问题的帮助。
我试过我的片段:
1 2 | MainActivity mc = new MainActivity(); mc.showDeviceListDialog(); |
但这显示NullPointerException。
所以,请告诉我如何在没有这些错误的情况下从片段中调用它。谢谢您。
因此,可以从
1 | getActivity ().showDeviceListDialog (); |
编辑(感谢用户1506104的评论):
实际上,您必须将
1 | ((MainActivity) getActivity ()).showDeviceListDialog (); |
这是假设
这是指向当前实例的引用,因此在静态方法中没有意义…做一些像
1 | MainActivity mc = new MainActivity(); |
不是Android想要你创建一个活动的方式…您需要获得像调用
不能创建这样的活动:mainActivity mc=new mainActivity();。Android对此负责。用意向代替。有关静态方法,请参阅本教程https://docs.oracle.com/javase/tutorial/java/javaoo/classvars.html。