私のアプリには、メニューから選択して別のビューに移動できる通常のメニューがあります。単純...
private void gotoSettings()
{
Intent settingsIntent = new Intent(this, SettingsActivity.class);
startActivity(settingsIntent);
}
これで、メイン ビューにフリング (ビュー間のスワイプ) を処理するメソッドも追加されました。
Intent intent = new Intent(MainActivity.this.getBaseContext(), CommandActivity.class);
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// left to right swipe
if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY)
{
startActivity(intent);
MainActivity.this.overridePendingTransition(R.anim.slideinleft, R.anim.slideoutright);
}
これが問題です。アプリの起動時に、メイン アクティビティで設定を選択すると、正常に動作し、設定アクティビティに移動します。しかし、Command アクティビティに移動してメイン アクティビティに戻り、[設定] をもう一度選択すると、同じメソッドが呼び出され、これが再び実行されます。
private void gotoSettings()
{
Intent settingsIntent = new Intent(this, SettingsActivity.class);
startActivity(settingsIntent);
}
ただし、設定アクティビティではなく、コマンド アクティビティが自動的に表示されるようになりました。私はデバッグして、上記のコードと startActivity(settingsIntent); の直後を通過するのを目撃しました。設定アクティビティには移動せず、コマンド アクティビティに移動します。
設定に行くように言っているので、これは非常に奇妙ですが、そうではありません。フリングと何か関係があるに違いないのですが、わかりません....?