2011-07-19 13 views
15

मुझे बैक बटन दबाए जाने के बाद एक बूलियन वैल्यू पास करने और इरादे से वापस करने की आवश्यकता है। लक्ष्य बूलियन सेट करना है और ऑनशैक ईवेंट का पता लगाने पर नए इरादे के कई लॉन्च को रोकने के लिए एक सशर्त उपयोग करना है। मैं साझा किए गए संदर्भों का उपयोग करता हूं, लेकिन ऐसा लगता है कि यह मेरे ऑनक्लिक कोड के साथ अच्छा नहीं खेलता है और मुझे यकीन नहीं है कि इसे कैसे ठीक किया जाए। किसी भी सुझाव की सराहना की जाएगी!इरादों के बीच बूलियन कैसे पास करें

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(); 
}} 

उत्तर

6

अपनी गतिविधि wasShaken कहा जाता है में एक निजी सदस्य चर है:

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

आशय अतिरिक्त प्राप्त करें।

private boolean wasShaken = false; 

इसे गलत पर सेट करने के लिए अपने ऑन्यूज़ को संशोधित करें।

public void onResume() { wasShaken = false; } 

अपने ऑनशेक श्रोता में, जांचें कि यह सच है या नहीं। यदि यह है, जल्दी वापस आओ। फिर इसे सही पर सेट करें।

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); 
    } 
}); 
+0

बिल्कुल मुझे जो चाहिए, धन्यवाद! :) – Carnivoris

63

सेट आशय (putExtra के साथ) अतिरिक्त:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    Boolean yourBool = getIntent().getExtras().getBoolean("yourBoolName"); 
} 
संबंधित मुद्दे