まず第一に..私はAndroidの世界にかなり慣れておらず(iOS開発だけから拡大しています)、インターネットでかなりの割合の研究を行ってきましたが、これにはちょっと困惑しています。
私のアプリはかなり基本的なアプリで、MainActivityはMapActivityとMenuで構成されています。
私がここに持っているテストデバイスは次のとおりです。
- HTCOneX-4.0.4-ハードウェアバック/ホーム/マルチタスク-ソフトウェアメニュー
- AsusNexus7-4.2.1-ソフトウェア戻る/ホーム/マルチタスク/メニュー
- Huawei AscendG300-2.3.6-ハードウェア戻る/ホーム/メニュー
私のアプリはこれらすべてのデバイスで正常に動作しているようで、テストのためにビルドをクライアントに送信しました。
彼のデバイスは次のとおりです。
- サムスンギャラクシータブ"10-3.1-ソフトウェア戻る/ホーム/マルチタスク/メニュー
アプリは正常に起動しているように見えますが、ソフトウェアメニュー(オーバーフロー)をクリックするとすぐに3つのボタン([検索]、[履歴]、[設定])が表示されますが、タップすると応答がなく、選択した画像も表示されません。プレスが受け取られていることを示してください!
同じ仕様でAndroidEmulatorを実行し、問題を再現できます( "10.1in WXGA(Tablet)"テンプレートを使用)。また、マップアノテーションが押された場合も同じように動作し、タッチに応答しません。 ..
私の最小SDKバージョンは10です私のターゲットSDKバージョンは17です
また、3.1(ハードウェアボタン付き)で320x480デバイスを実行しましたが、問題はありませんでした(MapViewのタッチにも問題ありません)。そのため、ハードウェアボタン付きの10インチタブレットを試してみました。
次に、AVDマネージャーで「10.1inWXGA(Tablet)」テンプレートのクローンを作成し、ソフトウェアボタンをハードウェアに変更して、何が起こったかを確認しましたが、それらを無視し、ソフトウェアボタンを表示しました。
次に、4.2で「10.1inWXGA(Tablet)」テンプレートを実行しました。これは、物理的なNexus 7と同じように問題なく実行されたため、10インチのタブレットが問題になることはありません。
この問題を解決する方法についてのアイデアが不足しているので、これは本当に困惑しているので、これを最後の手段として使用しています。
これが私のメニューXMLです(ライブバージョンに余裕がある場合に使用するため、テスト目的で設定をオーバーフローとして残しました)
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_search"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="@string/menu_search" android:enabled="true" android:checkable="false" android:visible="true"/>
<item
android:id="@+id/menu_history"
android:orderInCategory="101"
android:showAsAction="ifRoom"
android:title="@string/menu_history" android:enabled="true" android:checkable="false" android:visible="true"/>
<item
android:id="@+id/menu_settings"
android:orderInCategory="102"
android:showAsAction="collapseActionView"
android:title="@string/menu_settings" android:enabled="true" android:checkable="false" android:visible="true"/></menu>
そしてここにonCreateOptionsMenu()
and onOptionsItemSelected()
関数があります。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
Log.i("NOTE","Menu Item Pressed: "+item.getItemId());
switch (item.getItemId()) {
case R.id.menu_search:
showSearch();
return true;
case R.id.menu_history:
Intent history = new Intent(this, HistoryActivity.class);
startActivityForResult(history, HISTORY_REQUEST_CODE);
return true;
default:
Intent settings = new Intent(this, SettingsActivity.class);
startActivity(settings);
return super.onOptionsItemSelected(item);
}
}
ちなみに、アプリのビルドターゲットはGoogle API 4.2(API 17)です。
さらに情報が必要な場合はお知らせください。提供します。このバグは、PolarisMapViewライブラリでのオーバーレイの選択にも影響するため、メニューにローカライズされていない可能性があることにも注意してください。
ActionBarに表示される他の2つのMenuItemも正常に機能します。オーバーフローボックスに表示されたときのようです...また、マップ内のナビゲーションも正常に機能するため、マップはほとんどの部分でタッチイベントを取得しています。
これが私のMainActivityのレイアウトであり、関連性があるかもしれません。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.cyrilmottier.polaris.PolarisMapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_height="fill_parent"
android:layout_width="match_parent"
android:apiKey="MY API KEY HERE" />
<RelativeLayout
android:id="@+id/adsdkContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" >
</RelativeLayout>
</RelativeLayout>
読んでくれてありがとう!