我知道我可以在res /文件夹中创建一个名为layout-land的文件夹,Android会自动处理。我的问题是,如果我的方向从portait变为landscape,我想调用一个新的Activity? 我有什么:
然而,此活动必须初始化所有按钮,文本视图等,但当我将方向更改回纵向时,它会强制关闭,因为这些按钮不在该xml文件中!
我怎样才能解决这个问题?
答案 0 :(得分:0)
尝试使用getResources().getConfiguration().orientation
来检查当前的目标。
因此,当您倾斜设备时,可以避免让错误的资源膨胀。
- > http://developer.android.com/reference/android/content/res/Configuration.html#orientation
另一种(但不好!)方法可能是覆盖onConfigurationChanged
,因此您的土地布局将不会被使用,您可以在倾斜时推动另一项活动。就像:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//push new activity via intent
}
但我不建议你这样做。尝试第一种方法并告诉我这对你有用。 ;)
答案 1 :(得分:0)
托马斯的解决方案应该可行,但也知道如果纵向和横向模式共有的按钮执行相同的操作,您可以在尝试投射/分配之前检查findViewByID(...)是否为null 。从findViewByID(...)The view if found or null otherwise.
的文档中可以看到这样的东西:
Object x = findViewByID(R.id.something) != null;
if(x != null)
{
//cast it to whatever it really is (textview, button, etc)
//Add whatever listeners you want
}
请注意,我仍然会选择托马斯的解决方案,因为这样您只需要检查一个属性,而不必在布局之间的每个控件上检查null。