Android: переопределить onKeyUp и onKeyDown в Intent.ACTION_VIEW - PullRequest
0 голосов
/ 21 января 2012

У меня есть Android-приложение с вкладками, которое отображает музыкальные чарты (скажем, ChartActivity), каждая из которых, в свою очередь, отображает список музыкальных мелодий (скажем, EntryActivity).Нажатие на каждую запись музыкальных мелодий запустит, например, приложение YouTube (действия по умолчанию).То есть в list.setOnItemClickListener EntryActivity я выполняю вызовы:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(selectedSongUrl));
TabGroupActivity parentActivity = (TabGroupActivity)getParent();
parentActivity.startChildActivity("YouTube", intent);

(Да, я использую ActivityGroup и TabActivity.)

Проблема заключается в том, что при нажатии кнопки «Назад»на экране YouTube активный вид возвращается не в EntryActivity, а в ChartActivity.Я полагаю, это потому, что я не смог переопределить onKeyUp и onKeyDown на экране YouTube, чтобы я мог передать событие родительскому действию:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

// Overrides the default implementation for KeyEvent.KEYCODE_BACK 
// so that all systems call onBackPressed().
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        TabGroupActivity parentActivity = (TabGroupActivity)getParent();
        parentActivity.onBackPressed();
        return true;
    }
    return super.onKeyUp(keyCode, event);
} 

Есть ли способ сообщить EntryActivity о событиях обратного вызова, отправленных изIntent.ACTION_VIEW

1 Ответ

0 голосов
/ 08 февраля 2012

Я немного запутался в настройке вашего приложения ... Является ли это традиционным действием с вкладками, где каждая вкладка отображает свое собственное действие (например, ChartActivity и EntryActivity являются вкладками)?

Если это так, вы можете выполнить следующие действия в TabGroupActivity:

  1. Переопределите onPause (), чтобы сохранить индекс активной в данный момент вкладки в SharedPreferences.
  2. Переопределите onResume (), чтобы прочитать это предпочтение (если оно существует) и переключиться на вкладку, в которой вы были в последний раз.
  3. Переопределите onDestroy () и удалите это предпочтение, чтобы при следующем запуске упражнения вы начали на правильной вкладке.

Если это не то, как настроена ваша деятельность, пожалуйста, объясните немного больше о том, как все устроено.

...