我创建了一个名为 ShowPairedDevices.java 的活动,其中我有一个名为 ShowPairedDevices 的超类来显示所有蓝牙配对设备。 然后我在同一个活动中创建了另一个名为 Demo 的类,扩展了 ShowPairedDevices 。
public class ShowPairedDevices extends AppCompatActivity {
ArrayList<String> pairedDevicesList = new ArrayList<>();
public static ArrayAdapter<String> storePairedDevices;
BluetoothAdapter myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_paired_devices);
ListView myListView = (ListView) findViewById(R.id.listview);
Set<BluetoothDevice> pairedDevices = myBluetoothAdapter.getBondedDevices();
for(BluetoothDevice device : pairedDevices){
pairedDevicesList.add(device.getName());
}
storePairedDevices = new ArrayAdapter< (this,android.R.layout.simple_list_item_1,pairedDevicesList);
myListView.setAdapter(storePairedDevices);
}
}
然后我尝试在子类中访问名为 pairedDevicesList 的超类的ArrayList,它无法解析它。我甚至尝试在子类中创建超类的对象,然后通过其对象调用超类的成员,但是这也不起作用。请帮忙。
这是子类代码:
class Demo extends ShowPairedDevices{
pairedDevicesList.add("another device name");
}
答案 0 :(得分:2)
“演示”课没有意义。
您不能简单地在类范围内访问类似的变量 将其包装在函数中,或覆盖当前函数并访问如下数据:
public class Demo extends ShowPairedDevices {
@Override
protected void onCreate(Bundle savedInstanceState) {
pairedDevicesList.add("another device name");
}
}
答案 1 :(得分:0)
我猜你将你的子类放在ShowPairedDevices类的不同包中。
在这种情况下,您必须对ArrayList pairedDevicesList使用Protected关键字。这在Java中称为访问修饰符。有用的链接在这里引用https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
在某些时候,您需要使用此实现来重用变量或函数。