viewpagerホームフェースがサブページonkeydownイベントに応答する方法

1498 ワード

皆さんは開発中にViewPagerというクラスを使うことが多く、ViewPagerは複数のページを載せることができ、activityでもviewでもいいです.
開発では、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の大量のコードを書く必要がなくなります.コード構造もはっきりしている