2016-07-19 5 views
-1

Ich versuche, eine Benachrichtigung zu einem bestimmten Zeitpunkt, der vom Benutzer gewählt wird, zu machen. Diese Benachrichtigung ruft eine AsyncTask auf, die sich in einer anderen Klasse befindet. Ich erhalte jedes Mal eine Ausnahme, die ich mit diesem Code, dass AsyncTask nennen:Android: Ausnahme Aufruf einer AsyncTask in einer Benachrichtigung

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

Ich habe Log.d auf getHoroscope setzte aber die Ausnahme, die ich bekommen ist, bevor es.

Die Ausnahme:

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); 
} 

Klasse Erweiterte

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"); 
     (...) 
} 

Kann mir bitte jemand helfen?

Antwort

0

Sie können keine neue Activity() aufrufen. Die einzige Möglichkeit, eine Aktivität zu erstellen, ist über startActivity(). Jeder weitere Versuch führt entweder sofort oder später zu Fehlern. Wenn Sie möchten, dass AsyncTask außerhalb der Aktivität verwendet wird, sollten Sie sie zu einer Klasse auf oberster Ebene und nicht zu einer inneren Klasse machen.

Verwandte Themen