刚刚开始测试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了吗?按说,应该可以啊。……&……