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

标签 java android android-studio static crash

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

静态函数-

    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/

相关文章:

java - Hibernate - 集合未填充所有子项

java - 从Activity传递参数到doInBackground方法,异步任务

java - Gradle 错误 Could not find com.actionbarsherlock :actionbarsherlock:4. 4.0 with Eclipse exported project in Android Studio

android - zipAlignDebug输入文件不存在错误

eclipse - 从 eclipse 部署时有没有办法生成自定义 BuildConfig.java 文件?

java - 图道路复杂度

java - 切断相对于另一个的 URI

Java - 如何进行楼层划分?

java - 如何同时从两个服务读取值

java - 当我使用 proguard 混淆(Android Jack 编译器)时,我的应用程序崩溃了