没有运行的Android应用程序

时间:2012-04-02 15:40:22

标签: android

我创建了一个简单的应用程序,它将计数加1,并在TextView上显示计数。它编译和安装很好,但是当我运行它时,一条消息立即说“不幸的是,计数器已停止。”

package com.android.counter;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class CounterActivity extends Activity {
/** Called when the activity is first created. */

private static int count = 0;
Button increment = (Button) findViewById(R.id.inc);
TextView tv = (TextView) findViewById(R.id.CountDisp);


Runnable update = new Runnable()
{
    public void run() {
        increment.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {
                count++;
                tv.setText("Count:" + count);
            }
        });
    }
};


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Thread thr = new Thread(update);
    thr.start();

}

}

2 个答案:

答案 0 :(得分:1)

您需要在尝试查找任何视图之前设置Activity的内容。这样做......

Button increment = (Button) findViewById(R.id.inc);
TextView tv = (TextView) findViewById(R.id.CountDisp);

...您目前所处的位置,意味着incrementtv都是null。将这些行改为......

Button increment;
TextView tv';

然后在findViewById(...)调用onCreate(...)之后setContentView(...)使用Thread

此外,使用单独的onClick(...)(Runnable)来处理onClick(...)侦听器会使事情变得复杂并且不是必需的。只需在onCreate(...)中创建{{1}}侦听器,忘记其他线程代码。

答案 1 :(得分:0)

您需要查看LogCat。您可以使用Eclipse或DDMS工具执行此操作。 LogCat日志将显示:

  • 例外是什么
  • 代码中的位置

使用该信息,您可以找到原因。仅从源代码中进行操作就是受虐狂。