最近刚刚开始研究安卓,毫无经验。。。还请大家指点一二。
问题描述: 现在在做一个非常简单的 app,有两个 layout,其中一个为 default 的还有一个 layout 是设备横着时用的也就是有 landscape 的 resource qualifier。 在这两个 layout 上面都有 textview 还有一个 button, 这些组件的 id 在两个 layout 上都是一样的,只有位置是不一样的。比如在 default 的 layout 上面 button ID 是 button1 在 landscape 的 layout 上的 button ID 也是 button1。 我为这个 button 加个一个 callback 用来更新 textview 的值。 然后我就试了下。。。 按下 button 后 textview 是更新了,但是当我把手机横过来他换成 landscape layout 后 textview 的值变回原来的值了。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
TextView textView = (TextView)findViewById(R.id.textView);
textView.setText(textView.getText()+"123");
}
});
}
是不是因为 setContentView(R.layout.activity_main) 导致了我更新的只是这个 layout 下的 textview ? 那么有没有方法能够更新不同 layout 里面 id 相同的全部的 textview ? 因为我觉得 id 一样了 那就是一样的 widget 嘛。。。 为毛在一个 layout 里更新了另一个还是旧的值。。。
1
zhang2e 2017-07-13 07:13:20 +08:00 via Android
先说说你的需求吧
|
2
davy1995 2017-07-13 08:48:48 +08:00 via Android 1
原因是切换屏幕的时候,activity 生命周期又走了一遍。
android:configChanges="orientation"搜索下这个怎么用 |
3
inmyfree 2017-07-13 08:59:24 +08:00 via iPhone 1
activity 转屏重启了
|
4
vjnjc 2017-07-13 11:32:38 +08:00 1
你要让竖屏和横屏的 layout 看起来一样么?那么就用 onSaveInstanceState()和 onRestoreInstanceState()来做保存和恢复
https://developer.android.com/guide/components/activities/activity-lifecycle.html |