2017-02-11 73 views
-1

我已經創建了一個名爲ShowPairedDevices.java的活動中,我有一個超類名爲ShowPairedDevices顯示所有的藍牙配對設備。 然後,我創建了另一個類演示在同一活動中延伸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

「演示」級是沒有意義的。

您不能簡單地訪問像類範圍中那樣的變量。
把它包在一個函數,或重寫當前功能和訪問這樣的數據:

public class Demo extends ShowPairedDevices { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     pairedDevicesList.add("another device name"); 
    } 
} 
+0

非常感謝你Moonbloom。 –

0

我猜你是放在你的子類在不同的包ShowPairedDevices類的。

在這種情況下,您必須對ArrayList pairedDevicesList使用Protected關鍵字。這在Java中稱爲訪問修飾符。這裏有用的鏈接https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

在某些方面,您將需要此實現來重用變量或函數。