本文标签: Android 学习笔记
刚刚开始测试Activity之间数据传递时,写了两个Activity,数据共享是通过SharePreferences完成。但是运行时,会
出现应用程序意外终止的异常。通过Logcat调试,得知,原来Activity.findViewById()没有获取到View。
查看View的id也正确,没有错误。后来恍然大悟:
看如下代码:
private TextView view_disp;
private Button btn_skip;
public MainActivity(){
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Log.v("begin", "第一步");
this.setContentView(R.layout.main); //显示main中定义的布局
view_disp = (TextView)this.findViewById(R.id.view_disp);
btn_skip = (Button)this.findViewById(R.id.btn_skip);
Log.v("next", "第二步");
btn_skip.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//单击按钮,跳转到另一个Activity
Intent showInputIntent = new Intent();
showInputIntent.setClass(MainActivity.this, TargetActivity.class);
startActivityForResult(showInputIntent, 0);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent){
if(requestCode == 0 && resultCode == Activity.RESULT_OK){
SharedPreferences preferences = getSharedPreferences("Text",0);
view_disp.setText(preferences.getString("data", null)); //后一个参数是,当没有获取到data的值时,将null赋值给textview
这是后来改过的代码:
getViewById的使用,一定要放在onCreate()方法的this.setContentView(R.layout.main)之后。
不可以在类声明TextView时用view_disp = this.findViewById(R.id.view_disp);
但是,这里我有一点不明白:在R中不是已经存在这个id了吗?按说,应该可以啊。……&……
声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: Android错误之"source not find"
Linux系统与内核学习群:194051772
WP建站技术学习交流群:194062106
你还没有把这些组件渲染出来,当然取不到啦。
2011-05-28 16:21类似Web开发中,HTML页面用js的document.getElementById(id)来获取元素,经常看到有的人问为什么返回的是undefined呀,原因就是页面还没有加载完,你就去去,当然是undefined
系统要从你渲染的布局里找这个id,所以肯定会有这样的错误
2011-05-31 17:01剛開始我也遇到過這個問題,出現nullpointexception,也是這樣一步步找出問題的~
2011-08-26 15:44