0

Я пытаюсь использовать этот код:ProgressDialog и AsyncTask дает мне некоторые ошибки

  1. Когда я нажав на IMAGEBUTTON, это будет выполнять goJournalArticles (View v) метод:

    public void goJournalArticles(View v) 
    { 
    new DownoadJournalsFinishedAsync().execute(); 
    } 
    

Затем я делаю некоторые вещи, и во время этого, я показываю на progressDialog:

class DownoadJournalsFinishedAsync extends AsyncTask<String, String, ArrayList<String>> { 
    ProgressDialog dialog = new ProgressDialog(Journals.this); 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     dialog.setMessage("Loading Articles. Please wait..."); 
     dialog.setCancelable(false); 
     dialog.show(); 
    } 

    @Override 
    protected ArrayList<String> doInBackground(String... aurl) { 
     String journalNameShort = localDatabase.getHistoryLastSelectedJournal(); 
     int journalId = localDatabase.getJournalIdFromNameShort(journalNameShort); 
     ArrayList<String> result = new ArrayList<String>(); 

      try { 
       infoCourrentIssue = serviceMDPI.JournalCurrentIssue(journalId); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      int issue =infoCourrentIssue.getIssue(); 
      int volume = infoCourrentIssue.getVolume(); 
      ArrayList<Article> articles = GetCurrentIssue(journalId,volume,issue); 
      int size = articles.size(); 

      for (int i=0;i<size;i++) 
      { 
       result.add(Html.fromHtml(articles.get(i).getTitle()).toString()); 
      } 
      return result; 
    } 

    @Override 
    protected void onPostExecute(ArrayList<String> result) { 
     //View v = findViewById(R.id.Articles); 
      Intent myIntent = new Intent(getBaseContext(), JournalArticles.class); 
      myIntent.putExtra("articlesTitle", result); 
      startActivityForResult(myIntent, 0); 
      dialog.dismiss(); 
    } 
} 

Но когда я пытаюсь открыть новый вид деятельности, с намерением, я gotting эту ошибку:

03-05 12:08:47.724: E/AndroidRuntime(22249): FATAL EXCEPTION: main 
03-05 12:08:47.724: E/AndroidRuntime(22249): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{milos.mdpi/milos.mdpi.JournalArticles}: java.lang.NullPointerException 
03-05 12:08:47.724: E/AndroidRuntime(22249): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1785) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at android.os.Looper.loop(Looper.java:150) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at android.app.ActivityThread.main(ActivityThread.java:4389) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at java.lang.reflect.Method.invokeNative(Native Method) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at java.lang.reflect.Method.invoke(Method.java:507) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at dalvik.system.NativeStart.main(Native Method) 
03-05 12:08:47.724: E/AndroidRuntime(22249): Caused by: java.lang.NullPointerException 
03-05 12:08:47.724: E/AndroidRuntime(22249): at android.app.Activity.findViewById(Activity.java:1732) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at milos.mdpi.JournalArticles.<init>(JournalArticles.java:13) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at java.lang.Class.newInstanceImpl(Native Method) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at java.lang.Class.newInstance(Class.java:1409) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at android.app.Instrumentation.newActivity(Instrumentation.java:1040) 
03-05 12:08:47.724: E/AndroidRuntime(22249): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1777) 
03-05 12:08:47.724: E/AndroidRuntime(22249): ... 11 more 
+0

Посмотрите на мой обновленный ответ ... – user370305

ответ

0

Я нашел решение, проблема была в моем втором классе активности.

+0

И в чем проблема? – Deva

+0

Очень глупо думать, я должен признать. В моем втором действии я решил вызвать этот TextView journalName = (TextView) findViewById (R.id.JournalName); на onCreate, и я назвал это раньше. –

0

На первый взгляд в этих журналах он выглядит как вопрос с

@Override  
protected void onPostExecute(ArrayList<String> result) {   
//View v = findViewById(R.id.Articles);    
Intent myIntent = new Intent(getBaseContext(),JournalArticles.class);    
myIntent.putExtra("articlesTitle", result);   
    startActivityForResult(myIntent, 0);   
    dialog.dismiss();  
} 

Надеюсь, это поможет.

+0

Спасибо, deva, проблема есть, но я пытаюсь разрешить его в течение 3 часов allready. Проблема в том, что проблема связана с v.getContext(). –

+0

попробуйте с изменением контекста, getApplicationcontext() или getParent() –

+0

отредактировал код. попытайтесь изменить контекст. – Deva

0

попробовать this-

class DownoadJournalsFinishedAsync extends AsyncTask<String, String, ArrayList<String>> { 
ProgressDialog dialog; 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    dialog = new ProgressDialog(Journals.this); 
    dialog.setMessage("Loading Articles. Please wait..."); 
    dialog.setCancelable(false); 
    dialog.show(); 
} 
+0

Нет, все та же проблема –

0

Я думаю, что это будет исправить nullPionter

@Override  
protected void onPostExecute(ArrayList<String> result) {   
//View v = findViewById(R.id.Articles);    
Intent myIntent = new Intent(Journals.this, JournalArticles.class);    
myIntent.putExtra("articlesTitle", result);   
    startActivityForResult(myIntent, 0);   
dialog.dismiss();  
} 
1

В коде

@Override 
protected void onPostExecute(ArrayList<String> result) { 
    View v = findViewById(R.id.Articles); 
    Intent myIntent = new Intent(v.getContext(), JournalArticles.class); 
    myIntent.putExtra("articlesTitle", result); 
    startActivityForResult(myIntent, 0); 
    dialog.dismiss(); 
} 

Эта линия View v = findViewById(R.id.Articles); причиной NullPointerException

Таким образом, вместо этих двух линий

View v = findViewById(R.id.Articles); 
Intent myIntent = new Intent(v.getContext(), JournalArticles.class); 

просто использовать

Intent myIntent = new Intent(Journals.this, JournalArticles.class); 

Update:

Как с вашего LogCat NullPointerException в JournalArticles.java класс номер строки 13 ,

SO, пожалуйста, разместите соответствующий код для JournalArticles.java класс.

+0

Спасибо, но все та же проблема. Я не понимаю, почему. –

0

Я думаю, что вы должны отменить диалог перед вызовом следующего действия.

dialog.dismiss(); 

Intent myIntent = new Intent(getBaseContext(), JournalArticles.class); 
      myIntent.putExtra("articlesTitle", result); 
      startActivityForResult(myIntent, 0); 
+0

Ничего не меняется, но спасибо. –

Смежные вопросы