0

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

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

Проблема заключается в том, что, когда я вкладка кнопку назад с экрана 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 знать событие обратной связи от Намерения. ACTION_VIEW?

ответ

0

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

Если да, то вы можете сделать следующее в вашем TabGroupActivity:

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

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