Android 如何使用Java侧窗口内容(Xperia Play)从NativeActivity与ActionBar交互?

Android 如何使用Java侧窗口内容(Xperia Play)从NativeActivity与ActionBar交互?,android,android-actionbar,android-4.0-ice-cream-sandwich,native-activity,Android,Android Actionbar,Android 4.0 Ice Cream Sandwich,Native Activity,对于ICS之前的Xperia Play,从触摸板获取输入的唯一方法是通过本地活动(而不是普通的旧活动)。不幸的是,顾名思义,NativeActivity中的所有绘图都是在本机端完成的,而不是Java端。为了在本机端通过Java端的图形获取输入,必须将以下内容添加到NativeActivity的onCreate方法中: getWindow().takeSurface( null ); getWindow().setContentView( R.layout.main ); 并通过

对于ICS之前的Xperia Play,从触摸板获取输入的唯一方法是通过本地活动(而不是普通的旧活动)。不幸的是,顾名思义,NativeActivity中的所有绘图都是在本机端完成的,而不是Java端。为了在本机端通过Java端的图形获取输入,必须将以下内容添加到NativeActivity的onCreate方法中:

    getWindow().takeSurface( null );
    getWindow().setContentView( R.layout.main );
并通过JNI设置两种方法来接收来自本机端的触摸板和触摸屏输入。然后,您可以愉快地通过Android的Java API进行绘制,同时仍然可以获得触摸板输入。这对于Xperia Play运行预ICS非常有效。即使通过onCreateOptions菜单添加菜单也不会导致任何问题

当Xperia Play运行ICS时,问题就出现了。菜单已移动到操作栏。不幸的是,它不可能与动作栏交互(按下3个点将被忽略,这就像我按下动作栏后面的曲面一样。)

如果有任何不同,我将通过onCreateOptions菜单创建操作栏菜单选项。我正在使用Window.FEATURE\u ACTION\u BAR\u覆盖,并在用户按下“后退”按钮时使actionbar可见(mSingleton是NativeActivity实例):


这使动作栏可见,但正如我提到的,我无法与之交互。有没有办法强迫动作条有焦点或者其他什么?在ICS之前的版本中,普通菜单工作正常,这让我认为应该也可以与操作栏交互,因为它只是一个不同类型的菜单。

你在Xperia Play上运行的ICS版本是什么?我还需要知道它是索尼移动的mod版还是beta版。我个人没有Xperia Play,但由于这个问题与触摸屏有关,所以没有必要。此外,NativeActivity不仅仅用于Xperia游戏。也就是说,我可以向XDA开发人员发帖,让他们了解不同版本的ICS,看看这是否有什么不同。无论如何,我正在Galaxy Nexus上开发代码,使用未经修改的Android 4.0.4(内核3.0.8-gda6252b)。该行为至少会影响此设备和ICS版本。
mSingleton.runOnUiThread(
    new Runnable()
    {
        public void run()
        {
            if( mSingleton.getActionBar().isShowing() )
                mSingleton.getActionBar().hide();
            else
                mSingleton.getActionBar().show();
        }
    } );