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