[英]Why does my app crash on single choice?
我从所有有界的蓝牙设备中做出一个选择列表。 一旦做出选择,我就尝试举杯消息“成功”。 我的项目中有2个文件。 MainActivity.java:
import package_name.DeviceChooser.listenForDeviceChoose;
public class MainActivity extends ActionBarActivity implements listenForDeviceChoose{
public void chooseDevice (View view) {
deviceArray.clear();
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
// If there are paired devices
if (pairedDevices.size() > 0) {
// Loop through paired devices
for (BluetoothDevice device : pairedDevices) {
// Add the name and address to an array adapter to show in a ListView
deviceArray.add(device.getName());
}
}
DeviceChooser deviceChooser = new DeviceChooser();
deviceChooser.show(getSupportFragmentManager(), "DeviceChooser");
}
}
和DeviceChooser.java:
public class DeviceChooser extends DialogFragment {
public interface listenForDeviceChoose {
public void clickDevice(int i);
}
public Dialog onCreateDialog(Bundle savedInstanceState) {
builder.setSingleChoiceItems(cs, 1,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((listenForDeviceChoose) builder).clickDevice(which);
}
});
}
}
当我选择时,应用程序崩溃了。 为什么? 在哪里可以学到所有这些小知识呢?
您发布的代码段抛出ClassCastException
因为它是实现接口的MainActivity
。 您应该转换活动的对象而不是对话框的生成器。
((listenForDeviceChoose) getActivity()).clickDevice(which);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.