2014-05-12 2 views
3

Je voulais afficher Menu en ActionBar en utilisant ActionBarActivity.Options Menu non affiché sur ActionBar

Je reçois menu d'options en cliquant sur le bouton d'options au lieu d'afficher dans la partie supérieure de la barre d'action.

J'ai besoin les options menu en haut au lieu de cliquer sur le menu des options de 2,3 partir

Here is the image

Mon code:

public class MainActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setSubtitle("mytest"); 
    actionBar.setTitle("Testing"); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_action, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.menu_item_one: 
     Toast.makeText(this, "clicked search", Toast.LENGTH_SHORT).show(); 
     break; 

    default: 
     break; 
    } 
    return super.onOptionsItemSelected(item); 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() {} 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
     return rootView; 
    } 
} 

} 

Mon fichier XML:

+0

Afficher votre fichier XML de menu. – Suvitruf

+0

@Suvitruf J'ai mis à jour ma question –

+0

J'ai utilisé ActionBarSherlock, donc il n'y a pas ce problème) – Suvitruf

Répondre

0

Je ne suis pas sûr à 100%, mais il semble que votre fichier XML de menu doit avoir un Menu en elle. Dans le menu, ajouter les éléments. Comme ceci:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main_menu" > 

    <item... 

    <item... 

</menu> 

Peut-être que cela fonctionne.

Il y a aussi quelques autres choses à retenir en général. Android décide par lui-même ce qu'il doit afficher dans ActionBar (en fonction de ce qui s'y trouve et d'autres paramètres). Ce qui ne rentre pas dans le ActionBar va dans le trop-plein.

+0

Si vous cliquez sur modifier sur ma question, vous pouvez voir ces lignes –

+0

Malheureusement, ceux qui ne sont pas visibles après avoir posté la question –

0

Est-ce que dans votre oncreate()

ActionBar actionBar = getActionBar(); 
actionBar.show(); 

Cela devrait faire ce que vous voulez. Action Bar

+0

J'ai besoin 'getSupportActionBar();' pour prendre en charge tous les périphériques –

+0

Ensuite, il suffit de mettre actionbar.show(); après l'avoir initialisé. – JCodes13

+0

Essayé mais sans succès –

1

Essayez avec return super.onCreateOptionsMenu(menu); au lieu de return true dans votre méthode onCreateOptionsMenu selon le document ci-dessous android ...

http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems

Comme par document ci-dessus android ...

Les API ActionBar ont d'abord été ajouté dans Android 3.0 (niveau d'API 11), mais ils sont également disponibles dans la bibliothèque de support pour la compatibilité avec Android 2.1 (niveau d'API 7) et ci-dessus. Donc, si vous voulez ActionBar dans Android 2.3 puis vous devez utiliser Bibliothèque de support Android.

Edit:

Votre XML de menu devrait ressembler à ceci:

<?xml version="1.0" encoding="utf-8"?> 
<menu 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:yourapp="http://schemas.android.com/apk/res-auto" 
> 

<item android:id="@+id/item_menu_ok" 
android:icon="@drawable/ic_action_ok" 
android:title="@string/ok" 
yourapp:showAsAction="always"/> 

<item android:id="@+id/item_menu_cancel" 
android:icon="@drawable/ic_action_cancel" 
android:title="@string/cancel" 
yourapp:showAsAction="always"/> 

</menu> 

Remplacer yourapp avec votre nom d'application ou tout espace de noms.

+0

Ouais! J'ai essayé avec 'return super.onCreateOptionsMenu (menu);' mais pas de resutlt. J'ai ajouté la bibliothèque et fait tout –

+0

voir ma réponse éditée pour créer le menu fichier XML avec la bibliothèque de support android. –

+0

Si vous cliquez sur modifier la question, vous pouvez voir les titres de menu que j'ai gardé.Je suppose que ce n'est pas votre «app» dans 'android: app' –

1

Essayez-:

Créer un fichier XML sur "../res/menu/menu_main.xml"

manu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/menu_settings" 
     android:showAsAction="never" 
     android:icon="@android:drawable/ic_menu_settings" 
     android:title="@string/menu_settings"/> 

</menu> 

L'option "jamais" sur "showAsAction", important, si vous mettez que l'option montrer toujours ActionBar.

Ensuite, nous devons maintenant associer cette option sur MainActivity.java (la classe que vous voulez).

MainActivity.java

public class MainActivity extends Activity { 

    ... 

    @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; 
    } 
} 

Maintenant que nous définissons les éléments de notre barre d'action est de savoir comment répondre aux frappes faites par l'utilisateur à leur sujet.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

     case R.id.menu_settings: 
      Log.i("ActionBar", "Settings!");; 
      //open Activity,Fragments or other action 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

Si vous avez des options de Morer dans votre menu uniquement ajouter l'article sur XML menu_main.xml et sur la principale catégorie ajouter d'autres « cas ».

Par exemple:

MainActivity.java

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

     case R.id.menu_save: 
      Log.i("ActionBar", "Save!");; 
      //open Activity,Fragments or other action 
      return true; 
     case R.id.menu_settings: 
      Log.i("ActionBar", "Settings!");; 
      //open Activity,Fragments or other action 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

menu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

     <item 
      android:id="@+id/menu_settings" 
      android:showAsAction="never" 
      android:icon="@android:drawable/ic_menu_settings" 
      android:title="@string/menu_settings"/> 

     <item 
      android:id="@+id/menu_save" 
      android:showAsAction="never" 
      android:icon="@android:drawable/ic_menu_save" 
      android:title="@string/menu_save"/> 

    </menu> 
+0

Le seul changement ici consiste à étendre 'ActionBarActivity' à la place' Activity' –

+0

Oui, change ça et dis-moi. – Aspicas

0

Ok, nous allons essayer une autre réponse. Si, pour une raison quelconque, Android décide de ne pas afficher les éléments dans la barre d'action, alors ce que vous voyez est en effet le bon comportement. Les éléments qui ne sont pas dans la barre d'action sont affichés en débordement.

Une raison pour laquelle les éléments n'apparaissent pas dans la barre d'action est qu'ils n'ont pas d'icône définie.

Vous ne définissez une icône, comme cela,

android:icon="@drawable/ic_launcher" 

et je soupçonne que c'est le problème. L'icône du lanceur est de taille différente (plus grande) que les éléments de la barre d'action (plus petit). Essayez de définir l'icône dans la bonne taille et voir si elle est affichée.

http://developer.android.com/design/style/iconography.html

Edit: Il y a un pack barre d'icônes d'action pour vous aider à démarrer afin que vous puissiez tester pour voir si cela fonctionne. Téléchargez-le et utilisez eclipse pour importer une icône ..

+0

Dois-je déclarer dans le fichier manifeste? Désolé, il est déjà là dans le fichier manifeste –

+0

Huh? Je pense que le problème est que l'icône ic_launcher.png est de la mauvaise taille. Essayez d'ajouter une icône avec la taille correcte. –