2014-03-24 4 views
1

У моего приложения есть ActionBar (с использованием поддержки v7 lib), и есть некоторые действия, которые я хотел бы добавить, используя меню «Параметры». Я последовал за этим tutorial, чтобы реализовать панель и меню, и они выглядят так, как ожидалось при загрузке представления.Ошибка приложения при нажатии кнопки меню на Android 2.3

Устройство, которое я использую для тестирования, может содержать до 2 кнопок на панели действий, а остальные - в меню переполнения.

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

Если я добавлю третий или заставляю его не отображаться на панели действий (установкой showAsAction="never"), а затем я нажимаю кнопку «Меню», мое приложение выйдет из строя.

Logcat не регистрирует никаких сообщений об ошибках, но показывает эти предупреждения, когда я нажмите кнопку вызова меню:

W/KeyCharacterMap﹕ Can't open keycharmap file 
W/KeyCharacterMap﹕ Error loading keycharmap file '/system/usr/keychars/ft5x0x_ts.kcm.bin'. hw.keyboards.65536.devname='ft5x0x_ts' 
W/KeyCharacterMap﹕ Using default keymap: /system/usr/keychars/qwerty.kcm.bin 

Полный журнал от инициализации приложения до аварии момента: http://pastebin.com/gm22H18s

Эти предупреждения появляются каждый раз, когда я нажимаю кнопку, независимо от того, какое приложение запущено, поэтому я бы сказал, что это не связано. Недостатком является то, что это единственный выход на Logcat.

Обновление: В моем тестовом устройстве работает Android 2.3, и приложение рушится, когда я запускаю его. Я тестировал эмулятор KitKat, и он не врезался в него. Я также тестировал эмулятор Gingerbread, и он также падает. Таким образом, я знаю, что мое устройство не проблема.

menu.xml:

<?xml version="1.0" encoding="utf-8"?> 

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:com.example.myapp="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/action_search" 
     com.example.myapp:showAsAction="always" 
     android:icon="@drawable/ic_launcher" 
     android:title="Search" /> 
    <item 
     android:id="@+id/menu_cart" 
     com.example.myapp:showAsAction="always" 
     android:icon="@drawable/ic_launcher" 
     android:title="Cart" /> 
    <item 
     android:id="@+id/menu_login" 
     com.example.myapp:showAsAction="never" 
     android:icon="@drawable/ic_launcher" 
     android:title="Log in" /> 
</menu> 

Меню инфляции:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu items for use in the action bar 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

выход Logcat:

I/ActivityManager( 277): Start proc com.example.myapp for activity com.example.myapp/.MainActivity: pid=13924 uid=10053 gids={1006, 3003, 1015} W/KeyCharacterMap(13924): Can't open keycharmap file W/KeyCharacterMap(13924): Error loading keycharmap file '/system/usr/keychars/ft5x0x_ts.kcm.bin'. hw.keyboards.65536.devname='ft5x0x_ts' W/KeyCharacterMap(13924): Using default keymap: /system/usr/keychars/qwerty.kcm.bin I/DEBUG (13893): Build fingerprint: 'sprd/sprdroid_base/hsdroid:2.3.5/MocorDroid2.3.5/W12.20_P20.01:user/test-keys' I/DEBUG (13893): pid: 13924, tid: 13924 >>> com.example.myapp <<< I/DEBUG (13893): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000001 I/DEBUG (13893): r0 00000000 r1 00000007 r2 fffffe84 r3 00000070 I/DEBUG (13893): r4 0000bca8 r5 40789b38 r6 ad3889dc r7 00000001 I/DEBUG (13893): r8 003a8d98 r9 003a2e60 10 00000001 fp 41968b08 I/DEBUG (13893): ip ad389828 sp befc5358 lr ad356e9d pc a81155c8 cpsr 20800030 I/DEBUG (13893): d0 0000000000000000 d1 0000000000000000 I/DEBUG (13893): d2 0000000000000000 d3 0000000000000000 I/DEBUG (13893): d4 0000000000000000 d5 0000000000000000 I/DEBUG (13893): d6 0000000000000000 d7 0000000000000000 I/DEBUG (13893): d8 0000000042900000 d9 0000000000000000 I/DEBUG (13893): d10 0000000000000000 d11 0000000000000000 I/DEBUG (13893): d12 0000000000000000 d13 0000000000000000 I/DEBUG (13893): d14 0000000000000000 d15 0000000000000000 I/DEBUG (13893): d16 003a8d9860000013 d17 003a2e6000000001 I/DEBUG (13893): d18 000000060053b820 d19 00000001003a2e60 I/DEBUG (13893): d20 ab20faa000000006 d21 ab142fdcbefc5248 I/DEBUG (13893): d22 0000000000000000 d23 0000000000000000 I/DEBUG (13893): d24 3ff0000000000000 d25 0000000000000000 I/DEBUG (13893): d26 0000000000000000 d27 0000000000000000 I/DEBUG (13893): d28 3f137c749114f9db d29 3ff0000000000000 I/DEBUG (13893): d30 0000000000000000 d31 3ff0000000000000 I/DEBUG (13893): scr 60000013 I/DEBUG (13893): I/DEBUG (13893): #00 pc 000155c8 /system/lib/libutils.so I/DEBUG (13893): #01 lr ad356e9d /system/lib/libandroid_runtime.so

+0

Что происходит с этим атрибутом в вашем пользовательском пространстве имен? – Nick

+0

Согласно учебнику, о котором я упоминал, поскольку я использую библиотеку поддержки, атрибут 'showAsAction' отсутствует в библиотеке поддержки, поэтому мне нужно добавить имя пространства имен/пакетов моего приложения. – Guilherme

+1

Вы не собираете логарифм правильно. Подумайте об использовании инструмента командной строки, чтобы находить фактические сообщения, созданные при запуске приложения, а затем при его сбое. –

ответ

Смежные вопросы