質問

StopWatch GDKの例でガイドラインと規則によって行く、私はMenuOptionを開くことができません。

マイアプリは、「@@@@ test」の組み込みログ文をコンパイルして出力することができますが、OptionsMenuが表示されません。

https://developers.google.com/glass/develop/GDK / UI /イマージョン - メニュー

これは、MenuのAndroid APIのメソッドです。

openOptionsMenu();
.

ストップウォッチの規則からコードを洗いています:

/*
 * 
 * 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();

}
.

メニューのXML

<?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>
.

役に立ちましたか?

解決

編集:私の問題が何であるかを発見しました。私は誤って帰っていた準備されたオプションをコメントアウトしました。

ここでは正しくするための良い例です。

彼の助けのためにありがとう@ w9jds。

私は問題が私のコードにあるものを見つけることができませんが、ここで正しいメニュー作成と1つのタップを持つ例示的なソリューションです。

https://github.com/w9jds/glassmenumexample

プログラムには、Hello Worldカードをレンダリングするガラスアプリが表示されます。タップすると、「共有」オプションを持つオプションメニューが作成されます。

この機能は、カードがタイムライン上でどのように機能するのかと似ています。

メニュー - 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>
.

主な活動

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

}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top