android android-intent shake

android - Cómo pasar un booleano entre intentos



android-intent shake (2)

Establecer intención extra (con putExtra):

Intent intent = new Intent(this, NextActivity.class); intent.putExtra("yourBoolName", true);

Recuperar la intención extra:

@Override protected void onCreate(Bundle savedInstanceState) { Boolean yourBool = getIntent().getExtras().getBoolean("yourBoolName"); }

Necesito pasar un valor booleano a e intentarlo y retroceder cuando se presiona el botón Atrás. El objetivo es configurar el booleano y usar un condicional para evitar múltiples lanzamientos de una nueva intención cuando se detecta un evento onShake. Usaría SharedPreferences, pero parece que no funciona bien con mi código onClick y no estoy seguro de cómo solucionarlo. ¡Cualquier sugerencia sera apreciada!

public class MyApp extends Activity { private SensorManager mSensorManager; private ShakeEventListener mSensorListener; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mSensorListener = new ShakeEventListener(); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI); mSensorListener.setOnShakeListener(new ShakeEventListener.OnShakeListener() { public void onShake() { // This code is launched multiple times on a vigorous // shake of the device. I need to prevent this. Intent myIntent = new Intent(MyApp.this, NextActivity.class); MyApp.this.startActivity(myIntent); } }); } @Override protected void onResume() { super.onResume(); mSensorManager.registerListener(mSensorListener,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI); } @Override protected void onStop() { mSensorManager.unregisterListener(mSensorListener); super.onStop(); }}


tener una variable de miembro privado en su actividad llamada wasShaken.

private boolean wasShaken = false;

modifique su onResume para establecer esto en falso.

public void onResume() { wasShaken = false; }

en su oyente onShake, verifique si es cierto. Si es así, vuelve temprano. Entonces ponlo en verdadero.

public void onShake() { if(wasShaken) return; wasShaken = true; // This code is launched multiple times on a vigorous // shake of the device. I need to prevent this. Intent myIntent = new Intent(MyApp.this, NextActivity.class); MyApp.this.startActivity(myIntent); } });