`
zranye
  • 浏览: 26577 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

记录android编程bug--布局文件

阅读更多
    昨天遇到一个非常苦恼的问题,忙到三点多也没解决,今天早上起来,摸索了一下,就解决了。这个给我一个提示,人在累的时候,工作效率很低,还是休息好吧,也许问题解决得更快一点。

好了,不罗嗦,直接上我遇到的问题。高手还是不要看下去了,很小很小的、不小心的错误,不然会忍不住喷火的。

    在观察Activity生命周期的时候,我写了三个布局文件main、second、third,second和third的布局文件只放有标识的TextView,并且写了这三个类:

public class ManiActivity extends Activity {
	private final static String TAG = "MainActity";
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i(TAG, "ManiActivity onCreate");
        
        //当然这里还有一些按钮的事件绑定,用来作activity的跳转
    }
    @Override
    //还有onStart(),onResume(),onPause(),onStop(),onRestart(),onDestroy()的覆盖,都用加上一句Log.i(TAG,"ManiActivity 方法名");


public class SecondActivity extends Activity {
	private final static String TAG = "MainActity";
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i(TAG, "SecondActivity onCreate");
        
    }
    @Override
    //还有onStart(),onResume(),onPause(),onStop(),onRestart(),onDestroy()的覆盖,都用加上一句Log.i(TAG,"ManiActivity 方法名");

public class ThirdActivity extends Activity {
	private final static String TAG = "MainActity";
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i(TAG, "ThirdActivity onCreate");
        
    }
    @Override
    //还有onStart(),onResume(),onPause(),onStop(),onRestart(),onDestroy()的覆盖,都用加上一句Log.i(TAG,"ThirdActivity 方法名");


    有没有问题呢??哈哈...这样看好像比较容易看出来。

    这样运行是什么效果呢?不贴图了,就是点击了MainActivity的second按钮之后,跳转到了SecondActivity之后,MainActivity被stop了,SecondActivity开始了,但是SecondActivity是跟MainActivity的视图一样的,但是点击任何按钮都是没有反应的,神奇吧?(tips:高手还是别看下去了,不然你们会忍不住爆粗口的,这个是警示像我这样的菜鸟的)模拟器上退出软件,SecondActivity被Destroy了,再进入软件,第一个开启的是SecondActivity。对于我这样的菜鸟来说,真的有点错愕,为什么不是从MainActivity切入呢?为什么昨晚我的思路就没现在写博客这么清晰呢?哈哈...

    就是这一句setContentView(R.layout.main);我图方便,第二个和第三个Activity都是拷MainActivity的,没有改第二第三个activity的布局文件的绑定,还是绑到了main上面。所以,当跳转到第二个activity的时候,MainActivity所在的线程被stop了,SecondActivity被push到了stack顶端,能够拥有点击事件的监听器,但是因为绑定的是main的layout(就是这一句setContentView(R.layout.main);),只能用MainActivity的监听事件,而MainActivity被push到了stack中SecondActivity的下面,不能拥有监听的能力。晕了吧?哈哈... 所以能够在SecondActivity视图中看到MainActivity的视图,并且能够点击,但是点击之后没有反应。而退出软件的时候,SecondActivity被stop并Destroy掉,再进入的时候,因为MainActivity没有被Destroy,在LogCat中就会看到SecondActivity在没有Create MainActivity的时候被Create,产生是否绑错了main.xml就会抢占MainActivity的显示的怀疑,答案是否定的,因为stack中,绑定了main的MainActivity在stack中被堆置到了SecondActivity的下面,自然切入的时候,是先显示SecondActivity(这个时候从LogCat中跟踪是可以看到之前MainActivity是没有被destroy的)。

     昨天晚上跟踪了很久,甚至怀疑自己对stack工作的理解是否正确,为什么就没有像现在思路清晰呢?唉...三点半睡觉啊,白牺牲了,原来是这么小的问题,先罚自己写这一篇博文。

分享到:
评论

相关推荐

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    android应用源码图片浏览器完整无BUG-IT计算机-毕业设计.zip

    该压缩包文件“android应用源码图片浏览器完整无BUG-IT计算机-毕业设计.zip”包含了一个Android应用的源代码,这个应用是一个图片浏览器,适用于计算机专业学生的毕业设计学习。通过分析这个项目,我们可以深入理解...

    android-studio-2021.1.1.1-windows.zip

    3. **设计工具**:Android Studio的布局编辑器、预览功能、动画编辑等设计工具可能会有重大更新,提升UI/UX设计的效率。 4. **性能优化**:Canary版本会持续关注性能问题,可能包括更快的启动时间、更好的内存管理...

    Android 自定义View-旋转小按钮(修复bug)

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的UI组件。本项目“Android自定义View-旋转小按钮”就是这样一个实例,...这个案例对于深入理解Android UI编程非常有帮助。

    android-studio-2022.2.1.19-windows.exe

    1. **智能代码编辑器**:Android Studio配备了强大的Java、Kotlin、C++和Flutter代码编辑器,提供语法高亮、代码补全、实时错误检查和快速修复等功能,提高编程效率。 2. **Gradle构建系统**:它基于Gradle,允许...

    android-studio-2021.1.1.15-windows.zip

    10. **Kotlin优先**:Android Studio 4.0及以上版本大力推广Kotlin,使其成为首选编程语言,提供丰富的Kotlin相关工具和教程。 **2021.1.1.15版本可能的改进:** 这个版本是Android Studio的Beta版,通常会包含新...

    android课程设计-小组合作设计开发个人理财通项目.docx

    4. **UI设计与布局**:采用Android UI组件进行界面设计和布局,提升用户体验。 5. **安全性设计**:实现密码加密等安全措施,保护用户数据。 #### 三、具体技术实现 ##### 1. 数据库设计与管理 - **数据库选择**...

    android-1.1_r1-windows.zip

    1. XML布局:早期的Android开发主要使用XML进行界面布局设计,了解基本的布局组件如LinearLayout、RelativeLayout等是必要的。 2. Activity管理:理解Activity的生命周期,如何启动、暂停、恢复和结束Activity,...

    型男计划APP(android)--我的毕业设计.zip

    7. **界面设计**:良好的用户体验至关重要,开发者需遵循Material Design设计指南,使用XML布局文件和自定义视图组件,确保界面美观且易用。 8. **性能优化**:考虑到Android设备的多样性,开发者需要关注内存管理...

    android-metro-ui

    开发者需要知道如何导入第三方库,配置build.gradle文件,并在XML布局文件中使用提供的UI组件。 4. **XML布局**:项目中的UI组件通常会以XML格式定义,包括LinearLayout、RelativeLayout、GridLayout等布局,以及...

    Android游戏-超级玛丽(Android studio)

    - 测试与调试:使用Android Studio的内置模拟器或连接真实设备进行测试,修复bug并优化性能。 4. **关键技术点**: - **多线程**:为了保证游戏流畅,通常会使用单独的线程来处理游戏逻辑,防止UI线程阻塞。 - *...

    Android小游戏源码--打地鼠

    【Android小游戏源码--打地鼠】是一款初学者在学习Android编程一周后,用一天时间完成的简单游戏项目。这个游戏的开发过程展示了Android应用的基本构建和游戏逻辑的实现,是初学者进阶的重要实践。 首先,我们要...

    Android应用程序开发

    Android Studio提供了丰富的调试工具,可以帮助开发者定位问题并修复bug。 - **LogCat日志查看器**:用于查看应用的日志信息。 - **调试工具**:包括断点调试、内存分析等。 当应用开发完成并通过充分测试后,就...

    android开发从入门到精通光盘源代码

    2. **布局设计**:Android应用的界面主要由XML布局文件定义,包括线性布局、相对布局、约束布局等。学习如何使用这些布局创建用户友好的交互界面是入门的关键。 3. **活动(Activity)管理**:Activity是Android...

    安卓Android源码——oschina-android-app(开源中国).zip

    【标签】"安卓 android" 表明内容与安卓平台开发相关,涵盖了安卓系统的编程语言、框架、工具和技术实践。 【压缩包子文件的文件名称列表】中的四个文件: 1. **tags**:在版本控制系统中,tags通常用于标记特定...

    android项目-人口普查小项目

    升级文档则详细记录了版本间的变更,方便后续维护和升级,可能包含了bug修复、新功能添加和性能优化等内容。 源码是项目的灵魂,通过阅读和分析源码,可以深入理解项目的实现机制。开发者可能使用了MVC、MVVM或MVP...

    Android-based-emergency-app

    - 使用Android Studio的布局编辑器或XML文件创建UI。 - 可能包括紧急按钮、联系人列表视图、提示信息等元素。 - 使用Material Design组件提升用户体验,遵循Android设计指南。 6. **数据存储**: - 可能使用...

    安卓Android俄罗斯方块游戏--完整游戏项目源码

    在本项目中,我们关注的是一个基于Android平台的俄罗斯方块游戏。这是一款经典的游戏,由一系列不同形状的方块组成,玩家需要控制...总之,这个Android俄罗斯方块游戏项目是学习移动游戏开发和Android编程的绝佳实例。

    CavemenArena-Android-by-undevined:专为 Android 设计的单人(或双人)玩家游戏

    通过使用Android的兼容库和响应式布局,可以确保游戏在不同设备上都能正常显示和运行。此外,为了优化游戏性能,开发者可能利用了Android的异步任务处理、内存管理策略以及资源加载优化等技术。 游戏的发布和更新也...

Global site tag (gtag.js) - Google Analytics