2011-08-15 19 views
1

onshakeメソッドを使用して新しいアクティビティを開始したいと考えています。すべてが正常ですが、新しいアクティビティが開始されたときにonShakeコマンドはまだ可能です(私の電話を5回振ると、5回新しいアクティビティが開始されます)。私は電話を振って新しい活動を一度だけ始めるために何をすべきですか? ここに私のコードです。onshakeメソッドを使用して新しいアクティビティを開始する

public class ACTIVITY extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    SensorManager mSensorManager; 

    ShakeEvent mSensorListener; 

    mSensorListener = new ShakeEvent(); 
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    mSensorManager.registerListener(mSensorListener, 
     mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
     SensorManager.SENSOR_DELAY_UI); 


    mSensorListener.setOnShakeListener(new ShakeEvent.OnShakeListener() { 

     public void onShake() { 
      Intent i = new Intent(Shake.this, NEWACTIVITY.class); 
      startActivity(i); 
     } 
    }); 
}} 

私の悪い英語のためにすみません。ご協力ありがとうございます。

答えて

0

インスタンス変数(ブール値)を使用し、最初はfalseに設定したままにしておきます。 onShake()が初めて呼び出された場合は、新しいアクティビティを開始する前にfalseであることを確認してください。その後、それをtrueに変更し、アクティビティを開始します。次にonShake()メソッドが呼び出されると、インスタンス変数がtrueに設定されているため、アクティビティが開始されません。

関連する問題