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>

Était-ce utile?

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

}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top