如何更新 textview 使得在改变 layout 时候 textview 里面都是新的值?

2017-07-13 05:32:06 +08:00
 moonqqqq

最近刚刚开始研究安卓,毫无经验。。。还请大家指点一二。

问题描述: 现在在做一个非常简单的 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 里更新了另一个还是旧的值。。。

8848 次点击
所在节点    Android
4 条回复
zhang2e
2017-07-13 07:13:20 +08:00
先说说你的需求吧
davy1995
2017-07-13 08:48:48 +08:00
原因是切换屏幕的时候,activity 生命周期又走了一遍。
android:configChanges="orientation"搜索下这个怎么用
inmyfree
2017-07-13 08:59:24 +08:00
activity 转屏重启了
vjnjc
2017-07-13 11:32:38 +08:00
你要让竖屏和横屏的 layout 看起来一样么?那么就用 onSaveInstanceState()和 onRestoreInstanceState()来做保存和恢复

https://developer.android.com/guide/components/activities/activity-lifecycle.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/374939

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX