2015-06-05 1 views
0

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

Я разрабатываю для Kitkat (4.4) и пытаюсь использовать панель действий с темой: holo.light.darkActionBar.

Я создал несколько XML-файлов с пунктами меню и связал его в классе Java для деятельности:

меню/основной:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> 
<item android:id="@+id/action_filter" 
    android:title="@string/action_filter" 
    android:orderInCategory="100" 
    android:icon="@drawable/ic_action_filter" 
    app:showAsAction="ifRoom" /> 

MainActivity:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    menu.clear(); 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

Проблема заключается в следующем: Когда я нажимаю на menu/main.xml Я вижу, что элемент добавлен в панель действий. Но он никогда не появляется в файле activity_main.xml.

Я искал много часов и считал (а) следующим образом: -set minSDK to 19 -i знаю, что некоторое время он не появляется, потому что у устройства есть кнопка меню. Но я использую значок и говорю, что он должен отображаться. Поэтому он должен появиться. И я также использую эмуляцию Nexus, у которой нет кнопки меню. -Я использую студию Android и вставляю действия с помощью ассистента андроид-студии. -The mainActivity расширяет FragmentActivity (потому что я выбрал активность в google maps) -Я пробовал другие темы, но затем панель действий полностью исчезает (oc не использовал .noActionBar!) -Я установил стиль для панели действий, и там я укажите красный цвет. Этот цвет распространяется на активность, но не на элементы.

мой импорт:

import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 
import android.view.Menu; 

import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 

Как это должно выглядеть: rendering the menu/main.xml

Как это выглядит RIghtNOw: rendering the activity_main

Я действительно надеюсь, что некоторые из вас может мне помочь, это сводит меня орехи.

+0

Вы делаете что-либо в одном из своих фрагментов, которые могут быть переопределены меню Activity? Вероятно, вы также должны использовать новую панель инструментов: https://developer.android.com/reference/android/widget/Toolbar.html – ajpolt

ответ

1

Я думаю, ваш код, чтобы раздуть меню должен выглядеть следующим образом:

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

И удалить menu.clear() линии.

+0

благодарим вас за ответ. к сожалению, это не работает. ps: мое имя файла меню является основным (но это не имеет особого значения) –

+0

Я изменил это и вещи, которые CommonsWare сказал мне, и теперь это работает :) –

0

пытается использовать панель действий с темой: holo.light.darkActionBar

Это означает, что вы пытаетесь использовать бар родные действий.

Я создал несколько XML-файлов с пунктами меню и связал его в классе Java для деятельности

Избавиться от app имен, и переименовать app:showAsAction быть android:showAsAction.Соглашение app используется для backport, который вы не используете.

MainActivity:

Избавьтесь от menu.clear().

Но он никогда не появляется в файле activity_main.xml.

Не должно быть. Он должен отображаться при запуске приложения, не обязательно в редакторах для других ресурсов.

И я также использую Nexus Emulation, которая не имеет кнопки меню

Там, конечно, были Nexus устройства с кнопками MENU. Попробуйте нажать PgUp; если вы получаете меню переполнения вверх от нижней части экрана, ваш эмулятор имеет кнопку MENU.

+0

Я думаю, что это происходит в правильном направлении: Я думаю, что андроид-студия сделала проект совместим для более старых версий и поэтому использует appcompat. Где я могу указать wether Я хочу собственную панель действий и не скомпилирован с помощью appcompat? Я попытался изменить его на Android, но он говорит, что я должен использовать приложение. Я предполагаю, что есть место, где он установлен в appcompat. –

+0

@SeadiMove: «Где я могу указать, что я хочу, чтобы нативная панель действий не была скомпилирована с помощью appcompat?» - удалите 'appcompat-v7' из списка' dependencies' в файле 'build.gradle' вашего модуля. Удалите пространство имен 'app' XML из ресурсов меню и замените эти префиксы' app' на 'android'. Наследуйте свою деятельность от «Активность» вместо «ActionBarActivity» или «AppCompatActivity». Пусть ваша тема (например, 'res/values ​​/ styles.xml') наследуется от чего-то другого, кроме темы« AppCompat ». Могут быть и другие другие изменения, но это принесет вам большую часть пути. – CommonsWare

+0

На самом деле теперь это работает. Но не отображается в рендерере. Спасибо за Ваш ответ! Я также хотел бы знать, могу ли я настроить, что приложение не должно быть совместимо с очень поздними версиями. Я уже выбрал minSDK и targetSDK –