Création de menus d'options pour Google Glass
-
20-12-2019 - |
Question
passer par les directives et les conventions de l'exemple de chronomètre GDK, je ne peux pas obtenir le menuOption à ouvrir.
Mon application compile et capable de sortir l'instruction de journal incorporé de "" @@@@ Test ", mais aucune optionMenu n'apparaît.
https://developers.google.com/glass/develop/GDK / UI / Immersion-menus
Ceci est la méthode dans l'API Android pour le menu.
openOptionsMenu();
Je basse le code des conventions de chronomètre:
/*
*
* Menu Code
*/
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@Override
public boolean onKeyDown(int keycode, KeyEvent event) {
if (keycode == KeyEvent.KEYCODE_DPAD_CENTER) {
openOptionsMenu();
Log.v("@@@@","TEST");
return true;
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// Implement if needed
return false;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection. Menu items typically start another
// activity, start a service, or broadcast another intent.
switch (item.getItemId()) {
case R.id.stop:
//startActivity(new Intent(this, StopStopWatchActivity.class));
Log.v("@@@@","HI");
return true;
case R.id.read_aloud:
Log.v("@@@@","READ_ALOUD");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
//open the optionsMenu to make sure
@Override
public void openOptionsMenu() {
super.openOptionsMenu();
}
le XML pour menu
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/read_aloud"
android:title="@string/read_aloud"
android:icon="@drawable/ic_launcher"/>
<item
android:id="@+id/stop"
android:title="@string/stop"
android:icon="@drawable/ic_launcher"/>
</menu>
La solution
Edit: J'ai découvert ce que ma question était.J'ai commenté l'option préparée qui retournait de faux, ce qui a causé mes options non engagées.
ici en référence est un bon exemple pour le faire correctement.
Merci @ w9jds pour son aide.
Je ne trouve pas ce que la question était dans mon code, mais voici un exemple de travail de travail avec la création de menu correcte et un robinet.
https://github.com/w9jds/glassmenetxample
Qu'est-ce que le programme est montrant une application de verre qui rend une carte World Hello.En appuyez sur la carte crée un menu d'options qui possède l'option «Share».
Cette fonctionnalité est beaucoup similaire à la façon dont les cartes fonctionnent sur la chronologie.
Menu - Main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/share_menu_item"
android:title="@string/share_label"
android:icon="@drawable/ic_share_50"/>
</menu>
Activité principale
package com.example.glassmenuexample;
import com.google.android.glass.app.Card;
import com.google.android.glass.media.Sounds;
import com.google.android.glass.touchpad.Gesture;
import com.google.android.glass.touchpad.GestureDetector;
import android.media.AudioManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
public class MainActivity extends Activity
{
private GestureDetector mGestureDetector;
private AudioManager maManager;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//initialize the audio manager
maManager = (AudioManager) getSystemService(this.AUDIO_SERVICE);
//create gesture listener
mGestureDetector = createGestureDetector(this);
//create a new card for the view
Card cView = new Card(this);
//set the text of the card to the hello world string
cView.setText(R.string.hello_world);
//set the card as the content view
setContentView(cView.toView());
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private GestureDetector createGestureDetector(Context context)
{
GestureDetector gdDetector = new GestureDetector(context);
//Create a base listener for generic gestures
gdDetector.setBaseListener( new GestureDetector.BaseListener()
{
@Override
public boolean onGesture(Gesture gesture)
{
if (gesture == Gesture.TAP)
{
//play the tap sound
maManager.playSoundEffect(Sounds.TAP);
//open the menu
openOptionsMenu();
return true;
}
return false;
}
});
return gdDetector;
}
@Override
public boolean onGenericMotionEvent(MotionEvent event)
{
if (mGestureDetector != null)
return mGestureDetector.onMotionEvent(event);
return false;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// Handle item selection. Menu items typically start another
// activity, start a service, or broadcast another intent.
switch (item.getItemId())
{
case R.id.share_menu_item:
//do something on menu item click
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}