viewpagerホームフェースがサブページonkeydownイベントに応答する方法
1498 ワード
皆さんは開発中にViewPagerというクラスを使うことが多く、ViewPagerは複数のページを載せることができ、activityでもviewでもいいです.
開発では、ViewPagerが存在するactivityがonkeyDownイベントに応答できるという問題が見つかりました.では、サブページのactivityにどのように渡すのでしょうか.方法を見つけた
まず、サブページactivityのロード方法について説明します.
コードは次のとおりです.
上記のコードのように、LocalActivity Managerを使用してサブページactivityを起動します.私たちのすべてのサブページactivityが管理され、activityのIDも知っているので、対応するactivityを取り出すことができます.
これにより、親ページのキーをサブページに渡し、サブページに対応するイベントを処理させることができます.これにより、親ページにif elseの大量のコードを書く必要がなくなります.コード構造もはっきりしている
開発では、ViewPagerが存在するactivityがonkeyDownイベントに応答できるという問題が見つかりました.では、サブページのactivityにどのように渡すのでしょうか.方法を見つけた
まず、サブページactivityのロード方法について説明します.
コードは次のとおりです.
mManager = new LocalActivityManager(this, true);
mManager.dispatchCreate(savedInstanceState);
views = new ArrayList<View>();
views.add(getView(MAINHOME,new Intent(this, MainHome.class)));
views.add(getView(SUBMAINHOME,new Intent(this, SubMainHome.class)));
private View getView(String tag, Intent intent){
return mManager.startActivity(tag, intent).getDecorView();
}
上記のコードのように、LocalActivity Managerを使用してサブページactivityを起動します.私たちのすべてのサブページactivityが管理され、activityのIDも知っているので、対応するactivityを取り出すことができます.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (mViewPager.getCurrentItem()){
case 0:
return mManager.getActivity(MAINHOME).onKeyDown(keyCode, event);
case 1:
return mManager.getActivity(SUBMAINHOME).onKeyDown(keyCode, event);
}
return mManager.getActivity(MAINHOME).onKeyDown(keyCode, event);
}
これにより、親ページのキーをサブページに渡し、サブページに対応するイベントを処理させることができます.これにより、親ページにif elseの大量のコードを書く必要がなくなります.コード構造もはっきりしている