public class MainActivity extends Activity {
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那些方法就不会被执行。只能被当做一个最简单的类的初始化来处理。

更多相关文章

  1. [Android] Android打开WIFI或者移动网络
  2. ClassNotFoundException 案例
  3. Android(安卓)Recyclerview设置条目属性动画
  4. Android的线程和线程池
  5. Android(安卓)AsyncTask异步线程
  6. Android控制闪光灯的方法(打开与关闭)
  7. Android的线程和线程池
  8. java的jvm与android中的虚拟机的区别
  9. Android(安卓)更新升级版本

随机推荐

  1. Replace关键字的妙用查询是否包含某个特
  2. SQL Server优化50法汇总
  3. 执行一条sql语句update多条记录实现思路
  4. DDL、DML和DCL的区别与理解
  5. 清除SQL SERVER错误日志出现操作系统错误
  6. SQL Server存储过程入门学习
  7. 如何控制SQLServer中的跟踪标记
  8. MSSQL 监控数据/日志文件增长实现方法
  9. MSSQL监控数据库的DDL操作(创建,修改,删除
  10. MSSQL中删除用户时数据库主体在该数据库