Inf*_*eus 2 android android-activity xamarin
现在我用这个:
var activity = (Activity)Forms.Context;
Run Code Online (Sandbox Code Playgroud)
但我应该用什么来代替呢?
根据此处接受的答案,我应该使用Android.App.Application.Context:Xamarin.Forms: Forms.Context is obsolete
但我无法将其投射到Activity.
这里有什么解决方法吗?
UPD:我需要它来关闭库中的应用程序。
解决方案一: 使用CurrentActivityPlugin库。正确设置后:
var activity = CrossCurrentActivity.Current.Activity;
Run Code Online (Sandbox Code Playgroud)
解决方案二: 在MainActivity类中定义一个静态实例:
public class MainActivity : FormsAppCompatActivity
{
public static FormsAppCompatActivity Instance { get; private set; }
protected override void OnCreate(Bundle bundle)
{
Instance = this;
//other codes
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
var activity = MainActivity.Instance;
Run Code Online (Sandbox Code Playgroud)
注意:显然,当应用程序的入口点是 MainActivity 时,我们应该使用解决方案二,而不是其他入口点,例如后台服务、广播接收器等,否则 MainActivity.Instance 可能为 null。对于这些情况,我们可以使用解决方案一,或者也在这些入口点中定义一个静态实例。
| 归档时间: |
|
| 查看次数: |
1937 次 |
| 最近记录: |