首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GestureDetector NoClassDefFoundError

GestureDetector NoClassDefFoundError
EN

Stack Overflow用户
提问于 2014-08-13 21:35:16
回答 1查看 194关注 0票数 0

我创建了一个具有com.google.android.glass.touchpad.Gesture和其他导入的活动,它都很好并且正在运行。

然后我需要处理手势,所以我导入了

代码语言:javascript
复制
import com.google.android.glass.touchpad.GestureDetector` 

并创建了允许创建GestureDetector的适当方法。

代码语言:javascript
复制
    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

EN

回答 1

Stack Overflow用户

发布于 2014-08-15 05:21:02

即使类在编译时导入,也不意味着它们将在运行时解析。

您是否使用最新的软件版本在实际的玻璃硬件上运行此操作?如果您运行的不是格拉斯本身,那么Gesture/GestureDetector在平台运行时绑定到的类将不会出现,从而导致NoClassDefFoundError

GDK仅仅提供了编译时使用的瘦接口,所有实际的实现都内置到平台中。这允许进行平台/os更改,而不要求每个开发人员重新编译/重新部署他们的APK。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25296562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档