私はAndroid向けのプログラミングに比較的慣れていないため、(おそらく単純な)問題に悩まされています。私は何時間もいじってみましたが、どこにも行きません...
私のコードは次のとおりです。デバイスが回転してアクティビティが再開されると、アプリが停止します。onSaveInstanceState および onRestoreInstanceState メソッドを使用しましたが、役に立ちません! 誰か見てください:
public class DebugActivity extends Activity implements GPSCallback{
private GPSManager gpsM=null;
private ConvertSpeed conS =null;
private double speed = 0.0;
@Override
public void onCreate(Bundle savedInstanceState){
if(savedInstanceState != null){
speed = savedInstanceState.getDouble("speed");
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_debug);
gpsM = new GPSManager();
gpsM.startListening(getApplicationContext());
gpsM.setGPSCallback(this);
conS = new ConvertSpeed();
}
@Override
public void onSaveInstanceState(Bundle outState){
outState.putDouble("speed",speed);
super.onSaveInstanceState(outState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
speed = savedInstanceState.getDouble("speed");
}
@Override
public void onDestroy(){
gpsM.stopListening();
gpsM.setGPSCallback(null);
gpsM = null;
}
@Override
public void onGPSUpdate(Location location) {
location.getLatitude();
location.getLongitude();
speed = location.getSpeed();
String speedString = "" + conS.convertSpeed(speed,2);
TextView debug1 = ((TextView)findViewById(R.id.tvSpeed));
debug1.setText(speedString);
}
}
デバッグ:
このonCreate
メソッドでは、アクティビティが初めて実行されます。
if(savedInstanceState != null){
speed = savedInstanceState.getDouble("speed");
それは示しoutState = null
、speed = 0.0
画面が回転し、onSaveInstanceState
メソッドが表示outState = Bundle[{speed=0.0}]
され、2 秒後に到達せずにクラッシュonRestoreInstanceState
しonCreate
ます。