如何解决“ | FLAG_ACTIVITY_CLEAR_TOP”问题
|| 我使用以下功能从任何孩子返回首页(首页活动)。 我的任务是,如果我们在任何子页面中,它都应该进入首页并希望显示一个警报框。 没有警报对话框的所有子页面都可以正常工作。 它适用于带有警报对话框的以下情况 例如:首页->子A 它进入主页并显示警报对话框 如果我在多个子页面中,则无法使用 例如:首页->子A->子B 它进入主页并变得不专心,但是没有显示警告对话框。 根据我的任务,警报应该为cancellabe = false,因此无法在没有单击警报对话框中的按钮的情况下返回public void ShowConnectivityMessage()
{
Intent intent = new Intent( this,Homepage.class );
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity( intent );
new AlertDialog.Builder(this)
.setTitle(\"Cannot Connect To Service\")
.setMessage(\"The service has been unreachable for 1 hour. \")
.setCancelable(false)
.setPositiveButton(\"Help me shut down the app\",new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,int which)
{
if(Homepage.bIsLoggedInM)
{
StartTimer();
ShowHowToQuitTheApp();
}
}
}).show();
}
所以请任何人帮助我........
解决方法
对于每个孩子,您都必须编写android后退按钮的方法,并将其设置为Homepage,以便每个孩子都可以轻松地移至Homepage。
, 我的建议是,您从首页活动而不是子活动中调用警报对话框。这样,它将正常工作,其次,您不必在每个孩子中都使用相同的对话框代码(通过执行此操作,您将创建一个维护梦m,对对话框进行一次修改,然后需要遍历所有屏幕以更改..)。
, 在CLEAR_TOP Intent上,还应该设置一个附加值,以指示将显示该对话框:
public static void returnToHomepage(Context context) {
Intent intent = new Intent( context,Homepage.class );
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// This is new:
intent.putExtra(\"isNetFail\",true)
context.startActivity( intent );
}
然后在Homepage#onResume()中,如果定义了其他内容,则使用showDialog()构建并显示对话框。在onResume()
中执行此操作,而不是手动实例化和显示对话框,使您可以遵循适当的Android Activity生命周期-例如,在Activity中管理对话框(按设计进行),并确保Homepage活动重新回到前台在显示对话框时,从而避免任何泄漏的视图或窗口。
protected void onResume() {
// ...
if (getIntent().getBooleanExtra(\"isNetFail\",false)) {
showDialog(DIALOG_NETWORK_FAIL);
}
}
然后,当您想返回到Homepage活动(从NChild处于活动状态)时,您将调用:
Homepage.returnToHomepage(this);
最后,您不应该在Homepage活动中通过Handler进行30秒的轮询,因为一旦Homepage活动被暂停/停止,您将不再有任何保证。请参阅对Android Way进行多任务处理。相反,我建议创建一个通用的抽象MyCommonActivity
类,所有NChildActivity都将对其进行扩展。该活动可以启动线程进行网络轮询。但是您需要在onPause()
中停止它,然后在onResume()
中恢复它。您当前正在做的事情意味着Homepage在后台运行,而这是一个很大的禁忌,原因有很多。实际上,一种更合适的方法是设置一个负责检查网络连接的后台服务,或者使用BroadcastReceiver侦听网络连接的更改。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。