我正在编写一个Android应用程序,我想要修改文本视图。当我在onCreate()
方法中对其进行编辑时,它可以正常工作,但我想在用户点击屏幕时对其进行修改。
现在我知道单击屏幕的功能正常,但文本没有被修改。
在onCreate()
方法中(工作正常):
main = (TextView) findViewById(R.id.textView1_hidden_buttons);
main.append(" " + newString);
点按屏幕监听器:
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
// Clicking on the screen increases counter taps
@Override
public boolean onDown(MotionEvent event) {
synchronized (this) {
if (busy)
return true;
busy = true;
}
main = (TextView) findViewById(R.id.textView1_hidden_buttons);
main.setText("Waiting for other players");
try {
JSONObject json = new JSONObject();
json.put("client", "ready");
ConnectionHandler.send(json.toString());
String serverResponse = ConnectionHandler.receive();
Intent intent;
intent = new Intent(MainActivity.this,
OrderedButtonsActivity.class);
...
该应用正在等待ConnectionHandler.receive()
。
在调用修改文本后,我为应用程序调用{{1}}方法,并在一段时间后调用另一个活动。一会儿(半秒左右),我可以看到修改过的文字。
为什么会发生这种情况,如何修复它以便在单击屏幕后修改文本?
答案 0 :(得分:3)
我在这里看到了几个问题:
1)您试图在不findViewById()
extends
的班级(或任何有Activity
的班级中使用findViewById()
。
2)从您的问题看来,您导致UI Thread
进入睡眠状态。请不要这样做。冻结用户界面Thread
是一种糟糕的用户体验。
Thread
每隔一毫秒就会死掉独角兽和小猫。
如果您在onCreate()
内执行此操作,原因是因为Activity
有一个findViewById()
。