Android:为什么刷卡会杀死我的应用?

时间:2013-05-14 20:55:34

标签: android gesture

当我在屏幕上滑动时,我试图进行TextView更改。我使用了GestureDector.OnGestureListener,并按如下方式重新编码了onFling()方法:

@Override
public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent2, float v, float v2) {
    if (motionEvent.getRawY() < motionEvent2.getRawY()) {
        ((TextView) findViewById(R.id.textView)).setText("Next");
    } else if (moveTaskToBack(motionEvent.getRawY() > motionEvent2.getRawY())) {
        ((TextView) findViewById(R.id.textView)).setText("Previous");
    }

    return true;
}

但在我的情况下,出于一个奇怪的原因,当我向左轻拂时,应用程序停止(就像我按下主页按钮)。

导致这种情况的原因是什么?

编辑:如果我重新打开应用程序并按下返回按钮(物理),它会显示“上一个”,因此我可以得出结论,滑动有效但设置TextView后发生的事情是罪魁祸首。

2 个答案:

答案 0 :(得分:0)

findViewById(R.id.textView)

如果textView R.id.textView不在当前内容视图中,则会抛出错误。

有时,在覆盖的情况下,您需要执行此操作:

return super.onFling(motionEvent, motionEvent2, v, v2);

答案 1 :(得分:0)

嗯,这很尴尬。在else if语句中,由于某种原因,auto-complete可能添加了函数调用:

  moveTaskToBack(boolean b)

将堆栈移动到活动堆栈的后面。 http://developer.android.com/reference/android/app/Activity.html#moveTaskToBack(boolean)