首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >onPause()和onResume()在中没有调用

onPause()和onResume()在中没有调用
EN

Stack Overflow用户
提问于 2018-03-09 11:00:38
回答 4查看 3.6K关注 0票数 3

我正在Visual中用Xamarin Android开发一个Android应用程序。

我有一个MainActivity,它将不会超过2个按钮登录或注册。一旦其中一个按钮被点击,就会启动如下新的活动:

代码语言:javascript
运行
复制
sign_in_button.Click += delegate 
{
    var login_activity = new Intent(this, typeof(Login));
    StartActivity(login_activity);
};

在这个活动中,我做了所有我需要用API登录的事情,一切正常,成功后我保存令牌并调用Finish();返回到MainActivity。

代码语言:javascript
运行
复制
if(response_text != "\"wrong\"")
{
    General.SaveToken(this, response_text);
    Finish();
}

现在,问题是我需要以某种方式告诉MainActivity,用户成功登录了。为此,我考虑检查SharedPreferences中是否保存了令牌,如果存在,则启动所需的活动。这样,当应用程序打开时,如果已经保存了令牌,那么它也应该可以工作,然后转到x活动。

我的问题是,所有的活动事件(onPause、onRestart、onResume等)从未被称为.在MainActivity中,我添加了一个测试,以验证它是否像这样被调用:

代码语言:javascript
运行
复制
protected override void OnPause()
{
    base.OnPause();
    Console.WriteLine("TEEEEEEEEST");
    //set alert for executing the task
    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.SetTitle("Activity event");
    alert.SetMessage("The activity is paused");
    alert.SetPositiveButton("Ok", (senderAlert, args) =>
    {

    });

    Dialog dialog = alert.Create();
    dialog.Show();
}

但是没有出现对话框,控制台中没有显示TEEEEEEEEST。我也试图添加断点,但它们没有被击中。

当然,我尝试了所有其他的事件,都有相同的结果:没有。

据我从活动生命周期文档中了解到,onPause在调用StartActivity时会自动调用,在“子”活动调用Finish()之后会自动调用onResume,或者当按下back按钮时会自动调用onResume。

我错过了什么/做错了什么?

我读到这可能是Visual的一个问题,所以我在提供的android模拟器上和在一个真正的设备(LGE Nexus 5运行Android6.0.1)上进行了尝试,结果相同。

请帮帮我!

谢谢大家提前!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-03-14 11:41:19

显然问题是Visual,我重新安装了它,所有的活动事件都被正确地调用了。

谢谢大家的支持

票数 0
EN

Stack Overflow用户

发布于 2018-03-09 11:46:49

首先,确保您没有手动创建任何活动实例,这可能是某个活动的实例没有接收生命周期回调的原因之一。

但是,如果您的主要活动出现/单击上面的按钮,则会调用它们,但是您的环境/IDE可能有问题。

解决原始问题的一个很好的解决方案是使用startActivityForResult()

因此,可以启动登录活动以获取结果,如果登录成功,则返回RESULT_OK;如果没有成功,则返回RESULT_CANCELLED

在MainActivity中,您可以通过重写onActivityResult来检查结果

编辑:

好吧,让我们来调试一下你的尝试

  • 我不知道在onPause中显示对话框会做什么,因为基本上,当您的活动失去焦点时,您将显示一个对话框。
  • 请阅读这里Console并不真正在Android上工作,请使用Android的日志类代替。
票数 2
EN

Stack Overflow用户

发布于 2019-07-11 16:29:39

我也遇到了同样的问题,通过删除binobj文件夹解决了这个问题,然后我重新构建了这个项目,它成功了。我正在使用VisualStudioCommunity2019

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49192276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档