2014-02-24 2 views
1

Исходя из рекомендаций и условных обозначений в примере StopWatch GDK, я не могу открыть MenuOption.Создание меню параметров для Google Glass

мое приложение компилируется и может выводить встроенный журнал заявление о «» @@@@ TEST», но не появляется OptionsMenu.

https://developers.google.com/glass/develop/gdk/ui/immersion-menus

Это метод в 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> 

ответ

3

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

Здесь в качестве примера служит хороший пример, чтобы сделать это правильно.

Спасибо @ w9jds за помощь.

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

https://github.com/w9jds/GlassMenuExample

Что программа показывает приложение стекла, которое делает привет мир карты. При нажатии на карту создается меню опций с опцией «share».

Эта функциональность очень похожа на то, как карты работают на временной шкале.

Меню - 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); 
     } 
    } 

} 
Смежные вопросы