2011-09-05 87 views
0

我知道这是可能有纵向和横向模式的布局(这不是问题)。在纵向模式下说我要显示3个textviews(其实我有3个不同的图形,每个轴一个XYZ),并在景观我只想要一个TextView的(在我的情况下,它包含了所有3轴一个图表),都在那里查看了他们自己的ID。Android的肖像VS景观

在相应的活动

现在,你怎么设置的UI控件?由于在横向模式下,只有一个TextView的,而在纵向模式下我得到3.所以,当我在纵向模式来的。我只能写些东西在TextView的1 2和3,但没有到景观的TextView的,反之亦然。

手动检查,如果该UI控件是在这里(NOT NULL)不能正确的解决方案,对不对?

e.g

说,在纵向模式我有ID为“文本1”和一个景观以“文本2”一个TextView。 现在在活动的上创建方法,我做到以下几点:

text1 = (TextView) findViewById(R.id.text1); 
text2 = (TextView) findViewById(R.id.text2); 

text1.setText("some text"); 
text2.setText("some other text"); 

我会永远,因为在两种情况下textviews的一个不存在得到了NullPointerException。在使用它之前可以检查该字段是否为空,但是会引入更多的逻辑来处理 - 所以它不易维护

回答

0

也许通过使某些文字浏览可见/不可见,重新使用? 你可以发现你使用的模式是:。getResources()getConfiguration()方向

我不知道是否真的回答你的问题,但..

最佳,

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"); 
+0

0123其实这是我现在正在做的,但我在多个地方使用textviews,并始终把非空检查放在前面类似的东西吹了一下代码,并使其不易读 - 所以我认为可能有另一种最佳做法。 当然,设置视图隐藏的问题“浪费”资源,但在我的情况下,这不是一个真正的问题,所以我选择了它,因为我不需要任何额外的代码逻辑。 – kmera