当前位置:  ▪Android录音应用实例教程 iis7站长之家
本页文章导读:
    ▪kernel移栽体系总结        kernel移植体系总结kernel移植总结:    给你一套kernel,一套板子。你首先要做的是:    1,查看硬件板子的相关资源,如什么样子的sdram,什么样子的flash等等,mcu有哪些外设,等等。    2, 内.........
    ▪ bootloader移栽体系总结        bootloader移植体系总结         在嵌入式linux世界里,涉及的东西很杂,点点滴滴都可以成为一个系统体系,所以,从今后我的csdn博客里面的文章逐渐会体系化, 从而做到,每个一个知识.........
    ▪ setContentView+LayoutInflater=完美切换页面(两者一定要同时使用,setContentView提高切换页面速度必看)setContentView的秘密-续下       setContentView+LayoutInflater=完美切换页面(两者一定要同时使用,setContentView提高切换页面速度必看)setContentView的秘密----续上http://blog.csdn.net/yanzi1225627/article/details/7802018这里的问题我已经找到了.........

[1]kernel移栽体系总结
    来源: 互联网  发布时间: 2014-02-18
kernel移植体系总结
kernel移植总结:
   给你一套kernel,一套板子。你首先要做的是:
   1,查看硬件板子的相关资源,如什么样子的sdram,什么样子的flash等等,mcu有哪些外设,等等。
   2, 内核的启动,与存储设备(如flash),和文件系统关系甚大,所以要重点解决这两个方面的问题。
   3,完了,内核移植里面很重要的一个方面就是驱动移植,看你需要什么样子的驱动,就做什么样子的
移植。

    
[2] bootloader移栽体系总结
    来源: 互联网  发布时间: 2014-02-18
bootloader移植体系总结

         在嵌入式linux世界里,涉及的东西很杂,点点滴滴都可以成为一个系统体系,所以,从今后我的csdn博客里面的文章逐渐会体系化,

从而做到,每个一个知识点都体系化,从横向和纵向两个方面慢慢深入化。这里为bootloader移植体系总结,献血一个轮廓出来。我会慢

慢深入总结。

u boot移植总结:
   给你一套bootloader,一套板子。你首先要做的是:
   1,查看硬件板子的相关资源,如什么样子的sdram,什么样子的flash等等,mcu有哪些外设,等等。
   2,查看你的bootloader,分析下启动流程,一些地址关系,宏定义,makefile等等。以及里面各个目录的作用。
   3,如果你的bootloader在你的开发板子上跑步起来,你就要分析在哪个地方卡住的,然后化整为零,逐个突破。


    
[3] setContentView+LayoutInflater=完美切换页面(两者一定要同时使用,setContentView提高切换页面速度必看)setContentView的秘密-续下
    来源: 互联网  发布时间: 2014-02-18
setContentView+LayoutInflater=完美切换页面(两者一定要同时使用,setContentView提高切换页面速度必看)setContentView的秘密----续上

http://blog.csdn.net/yanzi1225627/article/details/7802018这里的问题我已经找到了答案.

setContentView的秘密:

      当activity 调用 setContentView() 时,android 才会去绘制 layout 上的各个元素,并为其分配内存。只有分配了内存以后,才能继续执行findViewById(); 才能得到引用,不然得到空引用。空引用意味着,后面使用相应变量时就会发生访问的对象不存在的问题。当Activity重新setContentView()以后,那些之前绘制的控件,内存都被灭掉了。所以,若是通过setContentView 来达到画面切换目的的,要注意重新绘制以后重新取得引用。

      --------(参考:http://www.go2solo.net/2011/07/08/setcontentview%E7%9A%84%E7%A7%98%E5%AF%86.html

               http://blog.csdn.net/simplty/article/details/7036773)

     什么是LayoutInflater?

           LayoutInflater的作用就相当于findViewById,只不过后者是查找一些小的widget,如button、textview,而前者是查找layout文件下的.xml布局文件。也就是说:LayoutInflater把布局xml文件引入成View对象,再通过setContentView(View view)方法来切换视图。因为所有对View的修改都保存在View对象里,所以,当切换回原来的view时,就可以直接显示原来修改后的样子。这样也就解决了setContentView后还要findViewById的问题,因为这里是实例化的view对象,通过这个view去setContentView,而且还能有效保存切换页面前的内容。

因此,我将程序修改成这个样子:

public class MainActivity extends Activity {
 View layoutMain = null;
 View layoutSecond = null;
 Button btn_mainActivity = null;
 Button btn_secondActivity;
 boolean firstFlag = true;
 long time = (long)0.0;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  LayoutInflater inflater = this.getLayoutInflater();
  layoutMain = inflater.inflate(R.layout.activity_main, null);
  layoutSecond = inflater.inflate(R.layout.activity_second, null);
  setContentView(layoutMain);

  btn_mainActivity  = (Button)findViewById(R.id.btn_mainAc_1);  
  btn_mainActivity.setOnClickListener(new ButtonListen());

 


 }

 class ButtonListen implements OnClickListener{

  public void onClick(View v) {
   // TODO Auto-generated method stub
   time = System.currentTimeMillis();
   switch(v.getId()){
   case R.id.btn_mainAc_1:
    Jump2Second();
    break;
   case R.id.btn_secondA_1:
    Jump2Main();
    break;
   default:
    break;
   }
  }

 }
 public void Jump2Second(){
  setContentView(layoutSecond);
  long currTime = System.currentTimeMillis();
  Toast.makeText(MainActivity.this,
    "切换耗时:" +String.valueOf(currTime-time)+"毫秒",
    Toast.LENGTH_SHORT).show();
  if(firstFlag){
   btn_secondActivity = (Button)findViewById(R.id.btn_secondA_1);
   btn_secondActivity.setOnClickListener(new ButtonListen());
   firstFlag = false;
  }   

 }
 public void Jump2Main(){
  setContentView(layoutMain);
  long currTime = System.currentTimeMillis();
  Toast.makeText(MainActivity.this,
    "切换耗时:" +String.valueOf(currTime-time)+"毫秒",
    Toast.LENGTH_SHORT).show();
 }
}

       这里要注意,firstFlag的使用,判断是否第一次跳转至second界面,如果是第一次的话则findViewById然后监听,只需要绑定一次就可以了。而且这个绑定必须在跳转函数里,不能在onCreate方法里。为什么呢?因为在onCreate方法里setContentView(layoutMain),系统只为layoutMain里的元素分配了内存,并没有为layoutSecond上的元素分配内存,尽管这里用view将其实例化对象里。(这块表述可能不准确,欢迎大神们指点)

       总之,没有setContentView(第二个界面)之前,第二个界面里的元素虽然能够find到,eclipse没有报错,但因为没有被分配内存,所以在onCreate这里为第二个界面绑定监听是错误的!你运行的时候程序会直接挂掉。

 

记住:setContentView之后才为布局里的元素分配内存,在未分配内存前对元素进行访问时没有意义的!!!

源码下载:http://download.csdn.net/detail/yanzi1225627/4464762

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3