我创建了一个具有com.google.android.glass.touchpad.Gesture和其他导入的活动,它都很好并且正在运行。
然后我需要处理手势,所以我导入了
import com.google.android.glass.touchpad.GestureDetector` 并创建了允许创建GestureDetector的适当方法。
public class LiveCardMenuActivity extends Activity{
private GestureDetector mGestureDetector;
public boolean onGenericMotionEvent(MotionEvent event) {
if (mGestureDetector != null) {
return mGestureDetector.onMotionEvent(event);
}
return false;
}
private GestureDetector createGestureDetector(Context context){
GestureDetector gestureDetector = new GestureDetector(context);
gestureDetector.setBaseListener(new GestureDetector.BaseListener(){
@Override
public boolean onGesture(Gesture gesture){
if(gesture == Gesture.TAP){
Log.d("Gesture.TAP","tapped");
return true;
}else if(gesture == Gesture.TWO_TAP){
return true;
}else if(gesture == Gesture.SWIPE_RIGHT){
return true;
}else if(gesture == Gesture.SWIPE_LEFT){
return true;
}
return false;
}
});
gestureDetector.setFingerListener(new GestureDetector.FingerListener(){
@Override
public void onFingerCountChanged(int previousCount, int currentcount){
//do something on finger count changes
}
});
gestureDetector.setScrollListener(new GestureDetector.ScrollListener(){
@Override
public boolean onScroll(float displacement, float delta, float velocity){
//do something on scroll
return true;
}
});
return gestureDetector;
}
@Override
public void onAttachedToWindow() {
Log.d("onAttachedToWindow","Successfully attached");
super.onAttachedToWindow();
// Open the options menu right away.
// openOptionsMenu();
setContentView(R.layout.live_card);
mGestureDetector = createGestureDetector(this); // DECISIVE LINE
}如果我取消对最后一行(决定性行)的注释,那么活动就会在NoClassDefFoundError中失败。否则,它不会成功地导入其他所有东西,包括com.google.android.glass.touchpad.Gesture
发布于 2014-08-15 05:21:02
即使类在编译时导入,也不意味着它们将在运行时解析。
您是否使用最新的软件版本在实际的玻璃硬件上运行此操作?如果您运行的不是格拉斯本身,那么Gesture/GestureDetector在平台运行时绑定到的类将不会出现,从而导致NoClassDefFoundError。
GDK仅仅提供了编译时使用的瘦接口,所有实际的实现都内置到平台中。这允许进行平台/os更改,而不要求每个开发人员重新编译/重新部署他们的APK。
https://stackoverflow.com/questions/25296562
复制相似问题