我的申请表中有3页。第A,B,C页。当我单击A页面中的下一个按钮时,页面将导航到B页面。在该页面中将有一些请求和响应过程,并且将发生进度指示器。然后,当我单击下一步时,页面将导航到C页面。还会有一些请求和响应过程以及进度指示器过程。现在我的问题是当我从页面C单击后退按钮时页面将导航到B页面。但请求响应流程和进度指示器流程正在运行。在这里,当我点击后退按钮时,我不想做这个过程。现在我尝试这样: -
@Override
protected void onStart() {
super.onStart();
Log.v(this.getClass().toString(),"onStart");
}
当我点击后退按钮时,请求和响应过程无效。但进度指标正在加载。该进度指标不断滚动。如何禁用所有功能。我只想回去。不要做任何其他工作。请帮我解决这个问题。抱歉,对于可怜的英语..
答案 0 :(得分:1)
您不希望覆盖此用例的onCreate()
方法,为什么要这样做?将创建活动,并且该过程将运行。您想要的是覆盖onBackPressed()
方法,以便在该过程完成之前不能退出活动。
与这些类似:Android: Proper Way to use onBackPressed() with Toast但是在这里你要制作一个在进程未完成时设置为false
的布尔值,并在完成时设置为true
。仅当onBackPressed()
为super.onBackPressed()
时,允许boolean
致电true
。
@Override
public void onBackPressed()
{
if(processesCompleted == true)
{
super.onBackPressed();
}
}
答案 1 :(得分:1)
如您所见,您添加了一个标志Intent.FLAG_ACTIVITY_CLEAR_TOP。该标志将清除以前的所有活动。
Intent.FLAG_ACTIVITY_CLEAR_TOP - 如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是会关闭其上的所有其他活动,此Intent将作为新Intent传递到(现在位于顶部)旧活动。
此外,您还完成了当前的活动,因此导航回B页会调用B onCreate
方法,您可以在其中处理这些请求并处理相关内容。避免添加flag和finish()方法。
答案 2 :(得分:0)
你不能在android中禁用onCreate()方法,但你可以像使用onStart()一样覆盖它。
我建议你看一下片段或活动的生命周期,具体取决于你使用的是什么。
片段: http://developer.android.com/guide/components/fragments.html
活动: http://developer.android.com/reference/android/app/Activity.html
如果没有更多的代码,很难理解问题究竟是什么,但是当按下后退按钮时,onCreate中的代码基本上不会被调用,因为活动将暂停,直到手机需要更多资源然后销毁它。如果一个活动被破坏,那么将调用onCreate方法,你无法做任何改变。
如果我的回答没有帮助,请提供更多示例代码。
答案 3 :(得分:0)
您可以创建一个新功能来运行进程并调用 它在onCreate上并使用布尔标志来确保何时返回 检查该活动和标志,不调用该函数。然后 在savedPreference onPause()方法中保存flag的值,你就是 done和onCreate()方法加载保存的首选项。
像这样的东西
boolean flag = false;
@Override
public void onResume()
{
super.onResume();
// load savedPreferences
}
@Override
public void onPause()
{
super.onPause();
//save savedPreferences
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
if(flag == false)
{
//function call
processes();
}
}
private void processes()
{
flag = true;
// do stuff here
}
答案 4 :(得分:0)
如果您的所有卡片都有不同的活动,则后门按钮应该可以正常工作。但是,如果您的活动被带到前面,除了onresume之外,不会重新加载任何内容。在onresume中,您可以执行新的加载结构或您想要实现的内容。
如果没有不同的活动,请使用onBackPressed()处的覆盖,它将处理后退按钮。
但是要提供一些代码以获得更好的答案