安卓程序eclipse编译没错,但模拟器运行出错

packagecom.google.android;importandroid.app.Activity;importandroid.view.View;importan... package com.google.android;
import android.app.Activity;
import android.view.View;
import android.widget.TextView;
import android.os.Bundle;
public class FirstActivity extends Activity {
TextView textView = (TextView)findViewById(R.id.textView1);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.out.println("测试1");
}

public void onClick1 (View v)
{
textView.setText(GetData.m);

}
}
布局文件中button1控件已经绑定onClick,现在问题出在控件textView上,将TextView textView = (TextView)findViewById(R.id.textView1);语句放在onClick方法体中就能正常运行,但在放在方法体之外就会报错,这是为什么啊,我是新手,解决问题还可加分
展开
 我来答
匿名用户
2012-02-27
展开全部
这很容易理解,你这程序编译时是没有问题的,但运行时
TextView textView = (TextView)findViewById(R.id.textView1);
这行变量的定义调用了方法。
而以上Andriod模拟是面向事件驱动的,你定义在类的变量中,在运行时没有一个事件触发其执行,如果你想在类初始化是开始时执行这一语句,你可以将其放在类的构造方法中。
adasmy
2012-02-27 · TA获得超过415个赞
知道小有建树答主
回答量:289
采纳率:0%
帮助的人:266万
展开全部
你写的textview的位置是用来定义全局变量的,为什么你这样写报错么,原因就是因为这个控件的findViewById(),因为程序走到这时,UI还没有被读到,也就是这个控件的id,换句话说OnCreate中有一个方法setContentView(R.layout.main); 这个方法的意思就是加载UI界面的,这个方法执行后,你所写的控件的findViewById()此时才会生效,如果不信你可以试试,findViewById()只要是放在 setContentView(R.layout.main); 前面,都会报错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式