记录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 方法名");
所以能够在SecondActivity视图中看到MainActivity的视图,并且能够点击,但是点击之后没有反应。而退出软件的时候,SecondActivity被stop并Destroy掉,再进入的时候,因为MainActivity没有被Destroy,在LogCat中就会看到SecondActivity在没有Create MainActivity的时候被Create,产生是否绑错了main.xml就会抢占MainActivity的显示的怀疑,答案是否定的,因为stack中,绑定了main的MainActivity在stack中被堆置到了SecondActivity的下面,自然切入的时候,是先显示SecondActivity(这个时候从LogCat中跟踪是可以看到之前MainActivity是没有被destroy的)。