2013-07-16 40 views
0

我有一个Android活动与分段。当我的应用程序启动时,一个列表视图加载了10个从服务器发送的元素。 (简单的请求)。Android:如何在方向更改时重新创建Activity?

当我改变我的设备的方向,活动重新创建,我也看到我的请求加载我的列表视图的微调。

我该如何禁止重新创建活动?

我已经设置了标志:

android:configChanges="orientation|keyboardHidden|screenSize" 

而且onConfigurationChanged:

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    mDrawerToggle.onConfigurationChanged(newConfig); 
} 
+0

根据我的知识,如果您使用'android:configChanges =“orientation | keyboardHidden | screenSize”'该视图不会被重绘。请确保您使用的是正确的活动 –

+0

是的,当我添加此标志时,当我更改方向时不会重新创建视图。但显示不正确。它只占用屏幕的一部分。 – wawanopoulos

+1

这是因为您可能需要创建单独的纵向和横向布局,并且在旋转手机时,请充气正确的手机。 – Mikel

回答

0

然后你要重写

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
} 

在你的活动,你想要做什么方向/ keyboardHidden /屏幕尺寸。

在清单中设置标志告诉应用程序您想自己处理这些配置更改。

+0

是的,它是我要做的:看到我更新的职位。谢谢 – wawanopoulos

0

您需要重写onSaveInstanceState(Bundle savedInstanceState)并保持方向更改时所需的所有值的状态。

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    // This bundle will be passed to onCreate if the process is 
    // killed and restarted. 
    savedInstanceState.putString("jsonArrayString", jsonArrayStrin); 
    // etc. 
} 

该值将被传递给onCreate和/或onRestoreInstanceState。您可以检索这个使用下列内容:

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    // This bundle has also been passed to onCreate. 
    String myArrayString = savedInstanceState.getString("jsonArrayString"); 
} 

希望这有助于

0

如果您不需要的方向改变,也可以防止它在清单中。只需在activity元素中指定属性:android:screenOrientation

相关问题