android Activity启动初始化与实例化Activty对象的用途研究
private TextView tv;
public MainActivity() {
// TODO Auto-generated constructor stub
System.out.println("MainActivity");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("onCreate");
tv=(TextView)findViewById(R.id.tv);
startActivity(new Intent(this,NextActivity.class));
}
public void updateUI(){
tv.setText("update");
}
}
public class NextActivity extends Activity{
public NextActivity() {
// TODO Auto-generated constructor stub
System.out.println("Next");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
MainActivity main=new MainActivity();
main.updateUI();
}
}
以上是2个Activty 打印出书的结果为
MainActivity
onCreate
NextActivity
onCreate
然后程序就会报错异常因为在NextActivty中使用了 MainActivity main=new MainActivity();
main.updateUI(); 重新创建了一个MainActivty对象。但是由于 我们的textVIew控件没有被初始化,所以会抛出null指针
这个是因为android的activty启动机制有关的。如果通过new MainActivty就能打开一个actity的话显然不安全也不现实。所以只能使用startActivty去打开activty
然后他就回去加载指定的activty类。然后开始初始化执行activty待定的初始化函数。如果是new Mainactyivty 的话 他的actity那些方法就不会被执行。只能被当做一个最简单的类的初始化来处理。
更多相关文章
- android googlemap的location报空指针解决案例
- Android开发:Activity初始化时屏蔽EditText的自动获取焦点的事件
- Android中添加布局和初始化布局总结
- android appwidget service的初始化
- Android初始化语言 (init.*.rc、init.conf文件格式)
- android注解初始化view
- Android 应用初始化及窗体事件的分发
- Android NullPointerException解决方法(空指针异常)
- [android]初始化代码仓库时出现“OSError: [Errno 2] No such fi