记录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的下面,不能拥有监听的能力。晕了吧?哈哈... :wink: 所以能够在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工作的理解是否正确,为什么就没有像现在思路清晰呢?唉...三点半睡觉啊,白牺牲了,原来是这么小的问题,先罚自己写这一篇博文。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值