我正在使用Visual Studio中的Xamarin Android开发一个安卓应用。
我有一个MainActivity,它只有两个按钮,一个是登录,一个是注册。当其中一个按钮被点击时,会启动一个新的活动,如下所示:
sign_in_button.Click += delegate
{
var login_activity = new Intent(this, typeof(Login));
StartActivity(login_activity);
};
在那个活动中,我需要使用API登录并完成所有操作,一切正常。成功后,我保存令牌并调用Finish();返回到MainActivity。
if(response_text != "\"wrong\"")
{
General.SaveToken(this, response_text);
Finish();
}
现在的问题是我需要想办法告诉MainActivity用户已成功登录。为了做到这一点,我考虑检查是否有一个token被保存在SharedPreferences中,如果是,就开始需要的活动。这样,当应用程序打开时,如果已经保存了一个令牌,就可以去到x活动。
我的问题是所有的活动事件(onPause、onRestart、onResume等)都没有被调用... 在MainActivity中,我添加了一个测试来验证它是否像这样被调用:
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();
}
但对话框从未出现,控制台中也没有显示“TEEEEEEEEEST”。我还尝试添加断点,但它们并没有生效。当然,我尝试了所有其他事件,结果都是一样的:什么也没有发生。根据活动生命周期文档的理解,当调用StartActivity时,onPause会自动被调用,当“子”活动调用Finish()或按下后退按钮时,onResume会被调用。我错过了/做错了什么?我读到说这可能是Visual Studio的问题,所以我在提供的Android模拟器和运行Android 6.0.1的LGE Nexus 5真实设备上尝试了两次,结果相同。请帮助!谢谢大家提前的帮助!
OnCreate()
方法的日志中检查它。您可以使用VS安装程序的修复功能来修复您的VS,或者尝试重新安装,毕竟这不是一个复杂的问题。 - Robbit