2013-05-14 65 views
0

我在屏幕上滑动时试图改变TextView。我用GestureDector.OnGestureListener,只是重新编码的onFling()梅索德如下:Android:为什么滑动杀死我的应用程序?

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

但在我的情况下,一个奇怪的原因,当我向左轻拂应用程序只是停止(像我按下home键) 。

这可能是什么原因造成的?编辑:如果我重新打开应用程序并按下返回按钮(物理),它显示“前”,因此我可以得出结论,刷卡工作,但设置TextView后发生的事情是罪魁祸首。

+2

添加您的logcat输出。 –

+1

给出的ID是否存在于您的视图中?最可能的原因是findVieByID返回null。但给我们你的logcat是肯定的。 –

+0

我收到了手机上所有内容的每条日志消息,是否有某种方法可以将它们过滤为仅从应用程序本身获取的日志消息? – DennisVDB

回答

0
findViewById(R.id.textView) 

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

有时,覆盖,你需要这样做:

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

从技术上讲,如果我可以设置findViewById(R.id.textView)一次(“下一个”),我不应该担心事实不在当前视图,但我可能是错的(android noobie)。 另外我不能调用super.onFling(),它来自一个接口(OnGestureListener)。 – DennisVDB

+0

“我不应该担心这个事实不符合当前的观点”那么,真的是这个问题,这是愚蠢的要求,在当前视图中存在findViewById中使用的视图。也许在类作用域中存储一个变量,然后在onCreate方法中将它初始化为(TextView)findViewById(R.id.textView),然后操作它? – Isaac

+0

我做了你所说的,但没有改变。那么问题应该放在其他地方。 – DennisVDB

相关问题