【问题标题】:NotificationCompat.Builder is giving Error :Java.Lang.IllegalStateException: 'System services not available to Activities before onCreate()NotificationCompat.Builder 给出错误:Java.Lang.IllegalStateException:'系统服务在 onCreate() 之前对活动不可用
【发布时间】:2021-03-06 15:41:14
【问题描述】:

我在一个类中编写了一个代码来使用 notificationCompat.Builder 通知我,它给了我这个错误,它告诉我我在 OnCreate() 之前做了一些事情,在 MainActivity 我声明了另一个类以便继承 CountDownTimer 类并在 OnFinished () 方法中我编写了这个小代码,它给了我一个错误。谁能帮我 ?我相信使用 this.activity 会导致问题,但我不知道解决方法:

public NotificationCompat.Builder builder;
 MainActivity activity = new MainActivity();
 NotificationManagerCompat notificationManager;
 public override void OnFinish() 
 { 
     Toast.MakeText(Application.Context ,"Finished",ToastLength.Short).Show();
      builder = new NotificationCompat.Builder(this.activity, CHANNEL_ID).SetAutoCancel(true)
    .SetContentTitle("CountDownTimer !!")
    .SetSmallIcon(Resource.Drawable.abc_ic_star_black_48dp)
    .SetContentText($" Stopped"); //  display.
      notificationManager = NotificationManagerCompat.From(this.activity);   Error  //  Java.Lang.IllegalStateException: 'System services not available to Activities...
     notificationManager.Notify(NOTIFICATION_ID, builder.Build());
 }

【问题讨论】:

  • 你不能只创建一个MainActivity的新实例,你需要使用对你应用程序现有MainActivity的引用
  • 如果我使用“this”关键字我得到,错误 CS1503 参数 1:无法从 'TimerApp_Test.MainActivity.CountDown1' 转换为 'Android.Content.Context' ?? ,那又是我的 CountDown1 类在 MainActivity 中
  • 关于如何获取当前活动的引用存在许多问题
  • 感谢我创建了一个上下文并在我的 Oncreate () 中传递了它 this ,然后我只是在另一个类中使用了该对象!
  • 如果对你有用,你可以把你的答案放在下面

标签: c# android .net xamarin


【解决方案1】:

这是代码只是为了说明对当前活动的引用:

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    
    static Context context;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);

        context = this; 
    
    }

    public class CountDown1 : CountDownTimer 
    {
         
        public NotificationCompat.Builder builder;
         
        NotificationManagerCompat notificationManager;

       
        public override void OnFinish() 
        { 
            Toast.MakeText(Application.Context ,"Finished",ToastLength.Short).Show();
             builder = new NotificationCompat.Builder(context, CHANNEL_ID).SetAutoCancel(true)
           .SetContentTitle("CountDownTimer !!")
           .SetSmallIcon(Resource.Drawable.abc_ic_star_black_48dp)
           .SetContentText($" Stopped"); // the message to display.

             notificationManager = NotificationManagerCompat.From(context);// Java.Lang.IllegalStateException: 'System services not available to Activities before onCreate()'
            notificationManager.Notify(NOTIFICATION_ID, builder.Build());

        }
        
    }
    
}

}

【讨论】:

    猜你喜欢
    • 2014-06-19
    • 2015-06-12
    • 2011-08-19
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2012-12-05
    • 2013-08-29
    相关资源
    最近更新 更多