2016-07-19 5 views
-1

ユーザーが選択した特定の時刻に通知しようとしています。この通知は、別のクラスにあるAsyncTaskを呼び出します。Android:通知でAsyncTaskを呼び出す例外

new ExtendedActivity().new Parse().getHoroscope("daily", signo); 

私はgetHoroscopeにLog.dを入れているが、私は得る例外は、その前にある:私は例外私はこのコードでAsyncTaskことを呼び出すたびに取得しています。

例外:

java.lang.RuntimeException: Unable to start receiver com.converter.android.dailyhoroscope.MyReceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference                      at android.app.ActivityThread.handleReceiver(ActivityThread.java:2732)                      at android.app.ActivityThread.-wrap14(ActivityThread.java)                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421)                      at android.os.Handler.dispatchMessage(Handler.java:102)                      at android.os.Looper.loop(Looper.java:148)                      at android.app.ActivityThread.main(ActivityThread.java:5417)                      at java.lang.reflect.Method.invoke(Native Method)                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                         Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference 
                          at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:150)                      at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:110)                      at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:222)                      at android.app.AlertDialog.<init>(AlertDialog.java:200)                      at android.app.AlertDialog.<init>(AlertDialog.java:196)                      at android.app.AlertDialog.<init>(AlertDialog.java:141)                      at android.app.ProgressDialog.<init>(ProgressDialog.java:77)                      at com.converter.android.dailyhoroscope.ExtendedActivity$Parse.<init>(ExtendedActivity.java:73)                      at com.converter.android.dailyhoroscope.MyReceiver.createNotification(MyReceiver.java:89)                      at com.converter.android.dailyhoroscope.MyReceiver.onReceive(MyReceiver.java:60)                      at android.app.ActivityThread.handleReceiver(ActivityThread.java:2725)                      at android.app.ActivityThread.-wrap14(ActivityThread.java)                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421)                       at android.os.Handler.dispatchMessage(Handler.java:102)                       at android.os.Looper.loop(Looper.java:148)                       at android.app.ActivityThread.main(ActivityThread.java:5417)                       at java.lang.reflect.Method.invoke(Native Method)                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

SchedulerActivity.java

  Intent myIntent = new Intent(context, MyReceiver.class); 
      AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      pendingIntent = PendingIntent.getService(context, 0, myIntent, 0); 
      Calendar calendar = Calendar.getInstance(); 
      calendar.set(Calendar.HOUR_OF_DAY, hours); 
      calendar.set(Calendar.MINUTE, minutes); 
      calendar.set(Calendar.SECOND, 00); 

      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, pendingIntent); 

MyReceiver.java

@Override 
public void onReceive(Context context, Intent intent) 
{ 
(...) 
    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context); 
    signo = pref.getString(dHosocope,""); 
    createNotification(context, signo); 
} 

public void createNotification(Context context, String signo){ 
(...) 
    sentence = new ExtendedActivity().new Parse().getHoroscope("daily", signo); 
} 

クラス拡張

public class ExtendedActivity extends BaseActivity { 

//AsyncThread 
    public class Parse extends AsyncTask<String, Void, String> { 
     public String getHoroscope(String type, String option){ 
     String description="", site; 
     Log.d("Extended","inside getHoroscopes"); 
     (...) 
} 

誰も助けてくれますか?

答えて

0

新しいアクティビティ()を呼び出すことはできません。アクティビティを作成する唯一の方法は、startActivity()を使用する方法です。それ以外の場合は、直ちにまたは後でエラーが発生します。 AsyncTaskをアクティビティの外で使用する必要がある場合は、内部クラスではなくトップレベルのクラスにします。

関連する問題