我正在尝试在应用中实现定位功能。该应用程序基本上由制表符组成,使用TabHost。每个选项卡都是一个活动组,其中包含一些活动。每个子活动都使用AsyncTask运行后台任务,以提取服务器数据并呈现UI。
例如,
HomeActivity- tab activity class that creates all the tabs
UserActivity- an activity group class representing a tab (say Tab 1)
TabOne- child activity inside UserActivity group
用户在成功登录后立即看到标签1。当我尝试为此选项卡设置方向功能时,问题就开始了。在活动(TabOne)中,我添加了以下内容
@Override
public void onSaveInstanceState(Bundle outState) {
System.out.println("saving state..!");
outState.putStringArray("imageUrls", imageArray);
super.onSaveInstanceState(outState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
System.out.println("restoring state..!");
imageArray = savedInstanceState.getStringArray("imageUrls");
super.onRestoreInstanceState(savedInstanceState);
}
我能够获得'imageUrls'状态。但是,稍后,我无法访问静态选项卡主变量。
HomeActivity.tabHost.getTabWidget().getChildAt(1)
tabHost变量为null!我没有保存任何州。我怎么可能保存tabHost实例?
在研究其他社区帖子时,我找到了'onRetainNonConfigurationInstance()'。我实现了相同的。
public Object onRetainNonConfigurationInstance() {
System.out.println("retaining state..!");
return HomeActivity.tabHost;
}
将此对象作为null返回。任何人都可以指导我使用tabHost处理应用中的方向更改吗?
问我是否发现任何令人困惑的事情。
提前致谢!
已解决:将清单中的screenSize添加到活动标签可以解决问题。
<activity android:name=".HomeActivity"
android:configChanges="orientation|screenSize"/>
答案 0 :(得分:0)
您可以添加参数
android:configChanges="orientation"
清单中的活动。我认为它做你想要的。它应该看起来像:
<activity
android:name="com.your.package.YourActivity"
android:configChanges="orientation"
</activity>