线程导致应用程序崩溃

时间:2011-08-31 19:16:55

标签: android multithreading

编辑:

只是因为你读到了这个问题我已经解决了问题我已经被我的布局搞糊涂了,并且当我意识到这一切都被整理好了时编辑错了!

结束编辑!

每当我向我的应用程序添加一个线程时,如果下面调用包含该线程的活动是包含该线程的代码段,则会导致它崩溃:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.cam);

    Toast t = Toast.makeText(this, "Just Click The Magnifying Glass To Search", 5000); //creates a new pop up message that lasts for 5 seconds

    t.setGravity(Gravity.CENTER|Gravity.CENTER, 0, 0);
    t.show();

    bt = (ImageButton)findViewById(R.id.button); //creates instance of button
    bt.setOnClickListener(search); //starts an on click listener for button

    preview = (SurfaceView)findViewById(R.id.myview); //creates instance of surfaceview
    previewHolder = preview.getHolder(); //creates a surfaceholder
    previewHolder.addCallback(this); //sets surfaceholder callback as the activity
    previewHolder.setType(3); //sets the type to SURFACE_TYPE_PUSH_BUFFERS 

    th = new Thread() {
        public void run() {
            handler.post(new Runnable() {
                public void run() {
                    tv.setVisibility(0);
                }
            });
        }
    };
    th.start();
}

如果有人能够对这种情况有所了解,那将非常感激

编辑:

我有线程工作并让它调用一个创建Toast的方法但是当我尝试修改textview的设置时它会抛出一个NullPointerException错误

2 个答案:

答案 0 :(得分:0)

我没有在代码(TextView tv)中看到tv = (TextView)findViewById(R.id.id_of_textview);的初始化。 可能是问题的原因?

要在5秒后显示TextView,您可以使用handler.postDelayed()

答案 1 :(得分:0)

如果您正在执行TextView tv = new TextView();,那么这是错误的,即使您正在执行TextView tv = (TextView)findViewById(R.id.tv);,布局也不会在setContentView()之前膨胀;所以你必须在onCreate()方法中初始化tv。