gpt4 book ai didi

android - 为谷歌眼镜创建选项菜单

转载 作者:行者123 更新时间:2023-11-29 17:52:27 25 4
gpt4 key购买 nike

按照 StopWatch GDK 示例中的准则和约定,我无法打开 MenuOption。

我的应用程序编译并能够输出“@@@@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>

最佳答案

编辑:我发现了我的问题所在。我注释掉了返回 false 的准备好的选项,这导致我的选项没有参与。

这里的引用是正确执行此操作的一个很好的例子。

感谢@w9jds 的帮助。

我在我的代码中找不到问题所在,但这里有一个工作示例解决方案,具有正确的菜单创建和一次点击。

https://github.com/w9jds/GlassMenuExample

该程序所做的是显示一个呈现 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>

主要 Activity

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

}

关于android - 为谷歌眼镜创建选项菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22000645/

25 4 0