无法访问同一活动中子类中超类的数据成员

时间:2017-02-11 15:29:21

标签: java android

我创建了一个名为 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");
}

2 个答案:

答案 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

在某些时候,您需要使用此实现来重用变量或函数。