我知道可以为纵向和横向模式设置布局(这不是问题)。在纵向模式下我想显示3个文本视图(实际上我有3个不同的图形,每个轴xyz一个),在横向中我只想要一个textview(在我的例子中是一个包含所有3轴的图形),所有的视图都得到了他们自己的身份。
现在在相应的活动中,您如何设置ui控件?因为在横向模式下只有一个textview,而在纵向模式下,我得到3.所以当我处于纵向模式时,我只能在textview 1 2和3中写一些东西但是没有任何东西进入landscape的textview,反之亦然。
手动检查ui控件是否在这里(非空)不是正确的解决方案,对吗?
e.g
在纵向模式下说我有一个id为'text1'的文本视图,在一个带有'text2'的横向文本中。 现在在活动的创建方法中,我执行以下操作:
text1 = (TextView) findViewById(R.id.text1);
text2 = (TextView) findViewById(R.id.text2);
text1.setText("some text");
text2.setText("some other text");
我总是得到一个NullPointerException
因为在任何一种情况下都不存在其中一个文本视图。在使用之前可以检查该字段是否为空,但这会引入更多逻辑来处理 - 因此它的可维护性较低
答案 0 :(得分:1)
您可以在两个布局中创建并使用visibility =“gone”隐藏它们以保持对视图的有效引用
答案 1 :(得分:1)
因为您可能不想浪费资源设置和处理在您的布局中不可见的字段,除非这在您的应用中有意义,您应该检查null
视图,这会让您知道哪些你正在处理的方向:
text1 = (TextView) findViewById(R.id.text1);
text2 = (TextView) findViewById(R.id.text2);
if ( text1 != null ) text1.setText("some text");
if ( text2 != null ) text2.setText("some other text");
答案 2 :(得分:0)
根据您使用的模式,可能会使某些文字视图可见/不可见? 您可以通过以下方式检测您正在使用的模式:getResources()。getConfiguration()。orientation
我不知道这是否真的能回答你的问题,但是......
最好,