#android #android-activity #android-intent #swipe
#Android #android-активность #android-намерение #проведите пальцем
Вопрос:
В моем приложении у меня есть обычное меню, где я могу выбрать из меню и перейти к другому представлению. Просто…
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 amp;amp; Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY)
{
startActivity(intent);
MainActivity.this.overridePendingTransition(R.anim.slideinleft, R.anim.slideoutright);
}
Теперь вот в чем дело. При запуске приложения, если я нахожусь в основном действии и выбираю «Настройки», оно работает нормально и переходит к действию «Настройки». Но если я перейду к командному действию, затем вернусь к основному действию, затем снова выберу Настройки, он вызовет тот же метод, который делает это снова:
private void gotoSettings()
{
Intent settingsIntent = new Intent(this, SettingsActivity.class);
startActivity(settingsIntent);
}
Но теперь он автоматически показывает действие команды вместо действия настроек. Я даже отлаживал и был свидетелем того, как он проходил через приведенный выше код и сразу после startActivity (settingsIntent); он не переходит к активности настроек, он переходит к командной активности.
Это очень, очень странно, поскольку я ГОВОРЮ ему перейти к настройкам, но это не так. Это должно быть как-то связано с fling, но я этого не вижу ….?
Комментарии:
1. Не уверен, почему он отформатировал код таким образом, я поместил `s вокруг кода
2. это для встроенного кода, для нескольких строк вы должны выбрать их все и нажать
{}
кнопку.3. Вероятно, это не решит проблему, но, похоже, вам следует переместиться
Intent intent = new Intent(MainActivity.this.getBaseContext(), CommandActivity.class);
внутрь if-statement, поскольку нет причин создавать Intent-instance, если он не будет вызван.4. @pecka, ты прав, вероятно, это не исправит, но нет необходимости создавать экземпляр, спасибо!
Ответ №1:
Вероятно, вам нужно написать так
Intent intent = new Intent(MainActivity.this, CommandActivity.class);
вместо
Intent intent = new Intent(MainActivity.this.getBaseContext(), CommandActivity.class);