我要TextViews
在 Fragment
中显示传感器读数.当试图初始化 SensorManager
getSystemServices
在 Fragment
中未定义, eclipse 说。为什么以及如何解决它。
fragment
public class FragSensors extends Fragment {
private TextView accXTv, accYTv, accZTv;
private SensorManager sensorManager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View v = inflater.inflate(R.layout.frag_sensors, container, false);
accXTv = (TextView) v.findViewById(R.id.accXValue);
accYTv = (TextView) v.findViewById(R.id.accYValue);
accZTv = (TextView) v.findViewById(R.id.accZValue);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
private final SensorEventListener mSensorListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
};
}
最佳答案
只需再调用一个方法:
sensorManager = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE);
为什么要调用一个额外的方法?
getSystemService()
提供访问系统服务的方法来自Context
.一个 Activity
扩展 Context
, 一个 Fragment
才不是。因此,您首先需要获得对 Activity
的引用。其中Fragment
包含,然后神奇地检索您想要的系统服务。
关于android - 在 fragment 中调用 getSystemServices 时未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61757259/