在一个片段我的应用程序与webserver通信现在我想要当方向改变时片段保留其实例但它没有发生我希望每个东西在方向期间保持持久性改变我的代码是如何可能的
@Override
public void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
protected void onPreExecute()
{
// TODO Auto-generated method stub
super.onPreExecute();
pDialog = new ProgressDialog(context,R.style.CustomDialogTheme);
pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pDialog.setMessage("Processing...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected String doInBackground(Object... params)
{
// TODO Auto-generated method stub
if(type.equals("register"))
{
/*String url="http://waqasbrosltd.co.uk/index.php/register";
Network network=new Network();
Gson gson = new Gson();
String registerData=gson.toJson(user);
try
{
answer=network.registerUser(url,registerData);
}
catch (ClientProtocolException e)
{
}
catch (IOException e)
{
}
finally
{
closeProgressDialog();
closeDialogbox();
}
}*/
return null;
}
public void closeProgressDialog()
{
if (pDialog.isShowing())
{
pDialog.dismiss();
}
}
iwant my progress dialog also retain its instance but it notr retain
答案 0 :(得分:0)
当方向改变时,android将破坏所有活动和片段并再次重新创建它们。这很有用,因为它还可以为您处理资源更改。例如,如果您有纵向和横向模式的不同布局文件,它会自动为您切换它们。
但您可以通过自己处理方向更改轻松地停止此过程。如果你这样做,android将不会破坏方向更改的任何东西,一切都将是持久性。如果需要更改资源,您应该自己完成!
观看此YouTube视频,了解如何操作
https://www.youtube.com/watch?v=Y5J6BURMrHQ&list=PLonJJ3BVjZW6hYgvtkaWvwAVvOFB7fkLa
答案 1 :(得分:0)
In your project manifest.xml inside activity tag put this line
android:configChanges="keyboardHidden|orientation|screenSize"
for example:
<activity
android:name="com.example.MainActivity"
android:label="@string/app_name" android:windowSoftInputMode="stateHidden" android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
and override this method in your activity
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
}
Hope this will help you.
答案 2 :(得分:0)
您需要Service
。 Service
是告诉Android你想要做一些不依赖于UI的事情的方式。
问题不在于您的活动正在被销毁,而是您依靠您的活动来处理您的通信任务。除了方向更改之外,这种方法在许多其他方面都存在问题,例如当操作系统决定在需要资源时销毁后台Activity
堆栈时。
交易需要由Service
处理。它是Context
对象,不会被方向更改破坏,也会阻止Android在需要资源时关闭您的进程。
使用Activity
,数据库和Server
对象实现REST架构有great Google IO lecture。
即使您没有实施整个解决方案,您也可以从讲座如何解决这个问题中学到很多东西。