
最近刚刚开始研究安卓,毫无经验。。。还请大家指点一二。
问题描述: 现在在做一个非常简单的 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 年 7 月 13 日 via Android 先说说你的需求吧 |
2 davy1995 2017 年 7 月 13 日 via Android 原因是切换屏幕的时候,activity 生命周期又走了一遍。 android:cOnfigChanges="orientation"搜索下这个怎么用 |
3 inmyfree 2017 年 7 月 13 日 via iPhone activity 转屏重启了 |
4 vjnjc 2017 年 7 月 13 日 你要让竖屏和横屏的 layout 看起来一样么?那么就用 onSaveInstanceState()和 onRestoreInstanceState()来做保存和恢复 https://developer.android.com/guide/components/activities/activity-lifecycle.html |