我正在尝试访问在 onCreateView 部分的 onCreate 部分中声明的变量“适配器”。这是一个列表。每次我检查 onCreate 之外的内容时,它都是空的。
这是代码
package com.example.beacon;
import java.util.List;
import com.estimote.sdk.Beacon;
import com.estimote.sdk.BeaconManager;
import com.estimote.sdk.Region;
import android.app.Fragment;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class FragmentBeacon extends Fragment {
private static final String TAG = MainActivity.class.getSimpleName();
private static final String ESTIMOTE_PROXIMITY_UUID = "B9407F30-F5F8-466E-AFF9-25556B57FE6D";
private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId",
ESTIMOTE_PROXIMITY_UUID, null, null);
private BeaconManager beaconManager;
public LeDeviceListAdapter adapter = null; //<---- this variable
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter = new LeDeviceListAdapter(getActivity());
beaconManager = new BeaconManager(getActivity());
beaconManager.setRangingListener(new BeaconManager.RangingListener() {
@Override
public void onBeaconsDiscovered(Region region, List<Beacon> beacons) {
Log.d(TAG, "Ranged beacons FB_onCreate: " + beacons);
adapter.replaceWith(beacons); //<---- this variable
Log.d(TAG, "adapters found: " + adapter.getCount());
}
});
beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
@Override
public void onServiceReady() {
try {
beaconManager.startRanging(ALL_ESTIMOTE_BEACONS);
} catch (RemoteException e) {
Log.e(TAG, "Cannot start ranging", e);
}
}
});
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
@Override
public void onServiceReady() {
try {
beaconManager.startRanging(ALL_ESTIMOTE_BEACONS);
} catch (RemoteException e) {
Log.e(TAG, "Cannot start ranging", e);
}
}
});
Log.d(TAG, "Adapters found2: " + adapter.getCount()); //<---- this variable
View rootView = inflater.inflate(R.layout.fragment_beacon, container,
false);
TextView[] pairs = new TextView[adapter.getCount()]; //<---- this variable
for (int l = 0; l < adapter.getCount(); l++) {
pairs[l] = new TextView(getActivity());
pairs[l].setTextSize(15);
pairs[l].setId(l);
pairs[l].setText((l + 1) + ": something");
((ViewGroup) rootView).addView(pairs[l]);
}
return rootView;
}
@Override
public void onStop() {
// Should be invoked in #onStop.
try {
beaconManager.stopRanging(ALL_ESTIMOTE_BEACONS);
} catch (RemoteException e) {
Log.e(TAG, "Cannot stop but it does not matter now", e);
}
super.onStop();
}
@Override
public void onDestroy() {
// When no longer needed. Should be invoked in #onDestroy.
beaconManager.disconnect();
super.onDestroy();
}
}
当我从 onBeaconsDiscovered 运行它时,计数是 != 0 这是正确的。但在其他任何地方,它始终为 0。
是我必须使用同一个片段内的捆绑包吗?