gpt4 book ai didi

java - 从静态方法崩溃调用非静态方法

转载 作者:行者123 更新时间:2023-12-02 09:43:40 25 4
gpt4 key购买 nike

我试图从静态方法调用非静态方法,但应用程序崩溃了,我不知道为什么会发生这种情况。如果您能帮助我理解为什么会发生这种情况以及如何解决它,我会很高兴。

静态函数-

    public static void myPlace(String place, String titles) {

if (place == "[]") {
// Not found Skip
} else {
Log.d("placea - ", place);
Log.d("titles - ", titles);

BackgroundProcess b = new BackgroundProcess();
b.addNotification();

}

非静态函数 -

    public void addNotification() {

NotificationCompat.Builder builder =
(NotificationCompat.Builder) new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Notifications Example")
.setContentText("This is a test notification");

Intent notificationIntent = new Intent(this, MyNotification.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);

// Add as notification
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(FM_NOTIFICATION_ID, builder.build());
}

日志-

FATAL EXCEPTION: AsyncTask #3
Process: alon.myplace, PID: 18679
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:304)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.content.ContextWrapper.getPackageName(ContextWrapper.java:132)
at android.content.ComponentName.<init>(ComponentName.java:77)
at android.content.Intent.<init>(Intent.java:4160)
at alon.myplace.BackgroundProcess.addNotification(BackgroundProcess.java:238)
at alon.myplace.BackgroundProcess.myPlace(BackgroundProcess.java:224)
at alon.myplace.PlacesDisplayTask.doInBackground(PlacesDisplayTask.java:33)
at alon.myplace.PlacesDisplayTask.doInBackground(PlacesDisplayTask.java:13)
at android.os.AsyncTask$2.call(AsyncTask.java:292)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)

感谢您的帮助。

最佳答案

问题出在您传入的上下文

Intent notificationIntent = new Intent(this, MyNotification.class);

this 为空。

请检查您如何获取上下文。它应该是一个有效的上下文,并且不应该为空。

关于java - 从静态方法崩溃调用非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37624321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com