2015-07-03 2 views
0

Я получаю нулевой arraylist «rev_arr», несмотря на добавление элемента в onProgressupdate. Я передал String в методе publishprogress. Но он не работает. Для удобства я не писал здесь импортных заявлений.Невозможно добавить String в Arraylist в onProgressUpdate в AsyncTask

Вот мой код -

public class det_movFragment extends Fragment { 
    public String revmovieJsonStr; 
    public ArrayList<String > rev_arr = new ArrayList<String>(); 

    public det_movFragment() { 
    } 

    @Override 
    public View onCreateView(final LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootview = inflater.inflate(R.layout.fragment_det_mov, container, false); 
     Intent intent = getActivity().getIntent(); 
     final Bundle extras = intent.getExtras(); 
     if (intent != null) { 
      String put_ext_tit = extras.getString("title"); 
      String put_ext_rel_date = extras.getString("rel_date"); 
      String url_pos = extras.getString("url_pos"); 
      int posit = extras.getInt("posit"); 
      String over = extras.getString("over_ex"); 
      final String id = extras.getString("id_ex"); 

      if(put_ext_tit!=null && id!=null) { 


         ((TextView) rootview.findViewById(R.id.title_mov)) 
         .setText(put_ext_tit); 
       ((TextView) rootview.findViewById(R.id.rel_date_mov)) 
         .setText(put_ext_rel_date); 
      ImageView im2= ((ImageView) rootview.findViewById(R.id.pos_im)); 

     Picasso.with(getActivity()).load(url_pos) 

         .centerCrop() 
         .resize(400, 400) 
         .into(im2); 
       ((TextView) rootview.findViewById(R.id.over)) 
         .setText(over); 

       Button b = (Button) rootview.findViewById(R.id.rev); 
       b.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         new getrev().execute(id); 
         String[] revi_arr = rev_arr.toArray(new String[rev_arr.size()]); 
         Log.e("mayank1",revi_arr[1]); 
         Intent intent_rev = new Intent(getActivity(),det_mov_rev.class); 
         Bundle ex_rev = new Bundle(); 
         ex_rev.putStringArrayList("rev_list",rev_arr); 
         intent_rev.putExtras(ex_rev); 
         startActivity(intent_rev); 

        } 
       }); 

      } 
      else {((TextView) rootview.findViewById(R.id.title_mov)).setText("mayank");} 
     } 


     return rootview; 
    } 

    public class getrev extends AsyncTask<String, String, Void> { 
     private final String LOG_TAG = getrev.class.getSimpleName(); 
     public int count; 
     String[] sin_rev; 
     String[] aut_rev; 
     @Override 
     protected Void doInBackground(String... params) { 
      HttpURLConnection urlConnection = null; 
      BufferedReader reader = null; 
      try { 
       final String movie_rev_url_str = "http://api.themoviedb.org/3/movie/"+ params[0] +"/reviews?api_key=8d7a48043ba1d3348181e2b6615cedc7"; 
       Log.v("url",movie_rev_url_str); 
       URL movie_rev_url = new URL(movie_rev_url_str); 
       urlConnection = (HttpURLConnection) movie_rev_url.openConnection(); 
       urlConnection.setRequestMethod("GET"); 
       urlConnection.connect(); 
       InputStream inputStream = urlConnection.getInputStream(); 
       StringBuffer buffer = new StringBuffer(); 
       if (inputStream == null) { 
        return null; 
       } 
       reader = new BufferedReader(new InputStreamReader(inputStream)); 
       String line; 
       while ((line = reader.readLine()) != null) { 
        buffer.append(line + "\n"); 
       } 
       if (buffer.length() == 0) { 
        return null; 
       } 
       revmovieJsonStr = buffer.toString(); 

       JSONObject revmovieJson = new JSONObject(revmovieJsonStr); 
       JSONArray revmovieJsonarray = revmovieJson.getJSONArray("results"); 
       count = revmovieJsonarray.length(); 
       aut_rev = new String[count]; 
       sin_rev = new String[count]; 
       for(int i=0;i<count;i++){ 
        JSONObject sin_rev_json = revmovieJsonarray.getJSONObject(i); 
        sin_rev[i] = sin_rev_json.getString("content"); 
        Log.e("mayank",sin_rev[i]); 

        publishProgress((String) sin_rev[i]); 

       } 
      } catch (IOException | JSONException e) { 
       Log.e(LOG_TAG, "Error ", e); 
       return null; 
      } 
      finally { 
       if (urlConnection != null) { 
        urlConnection.disconnect(); 
       } 
       if (reader != null) { 
        try { 
         reader.close(); 
        } catch (final IOException e) { 
         Log.e(LOG_TAG, "Error closing stream", e); 
        } 
       } 
      } 
      return null; 
     } 

     @Override 
     protected void onProgressUpdate(String... values) { 

      rev_arr.add(values[0]); 

     } 

    } 
} 

Это мой LogCat -

07-03 22:34:54.370 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc V/Zygote﹕ Switching descriptor 34 to /dev/null 
07-03 22:34:54.370 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc V/Zygote﹕ Switching descriptor 9 to /dev/null 
07-03 22:34:54.370 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/dalvikvm﹕ Late-enabling CheckJNI 
07-03 22:34:54.450 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/ActivityThread﹕ handleBindApplication:jindal5.mayank.popular_movies_14ce10032_gsc 
07-03 22:34:54.450 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/ActivityThread﹕ setTargetHeapUtilization:0.75 
07-03 22:34:54.450 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/ActivityThread﹕ setTargetHeapMinFree:4194304 
07-03 22:34:54.480 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/dalvikvm﹕ VFY: unable to find class referenced in signature (Landroid/os/PersistableBundle;) 
07-03 22:34:54.480 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/dalvikvm﹕ Could not find method android.support.v7.app.ActionBarActivity.onSaveInstanceState, referenced from method jindal5.mayank.popular_movies_14ce10032_gsc.MainActivity.onSaveInstanceState 
07-03 22:34:54.480 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/dalvikvm﹕ VFY: unable to resolve virtual method 8240: Landroid/support/v7/app/ActionBarActivity;.onSaveInstanceState (Landroid/os/Bundle;Landroid/os/PersistableBundle;)V 
07-03 22:34:54.480 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000 
07-03 22:34:54.510 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/dalvikvm﹕ Could not find method android.view.ViewGroup.onNestedScrollAccepted, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onNestedScrollAccepted 
07-03 22:34:54.510 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/dalvikvm﹕ VFY: unable to resolve virtual method 12275: Landroid/view/ViewGroup;.onNestedScrollAccepted (Landroid/view/View;Landroid/view/View;I)V 
07-03 22:34:54.510 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000 
07-03 22:34:54.510 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/dalvikvm﹕ Could not find method android.view.ViewGroup.onStopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onStopNestedScroll 
07-03 22:34:54.510 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/dalvikvm﹕ VFY: unable to resolve virtual method 12281: Landroid/view/ViewGroup;.onStopNestedScroll (Landroid/view/View;)V 
07-03 22:34:54.510 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000 
07-03 22:34:54.510 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/dalvikvm﹕ Could not find method android.support.v7.internal.widget.ActionBarOverlayLayout.stopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.setHideOnContentScrollEnabled 
07-03 22:34:54.510 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/dalvikvm﹕ VFY: unable to resolve virtual method 9846: Landroid/support/v7/internal/widget/ActionBarOverlayLayout;.stopNestedScroll()V 
07-03 22:34:54.510 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x000e 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/dalvikvm﹕ VFY: unable to resolve virtual method 407: Landroid/content/res/TypedArray;.getChangingConfigurations()I 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/dalvikvm﹕ VFY: unable to resolve virtual method 429: Landroid/content/res/TypedArray;.getType (I)I 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/dalvikvm﹕ Could not find method android.content.res.Resources.getDrawable, referenced from method android.support.v7.internal.widget.ResourcesWrapper.getDrawable 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/dalvikvm﹕ VFY: unable to resolve virtual method 370: Landroid/content/res/Resources;.getDrawable (ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/dalvikvm﹕ Could not find method android.content.res.Resources.getDrawableForDensity, referenced from method android.support.v7.internal.widget.ResourcesWrapper.getDrawableForDensity 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/dalvikvm﹕ VFY: unable to resolve virtual method 372: Landroid/content/res/Resources;.getDrawableForDensity (IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; 
07-03 22:34:54.520 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002 
07-03 22:34:54.590 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/Settings﹕ Setting airplane_mode_on has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value. 
07-03 22:34:54.610 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: () 
    OpenGL ES Shader Compiler Version: E031.24.02.07 
    Build Date: 11/03/14 Mon 
    Local Branch: 
    Remote Branch: 
    Local Patches: 
    Reconstruct Branch: 
07-03 22:34:54.630 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/qdutils﹕ PartialUpdate status: Disabled 
07-03 22:34:54.630 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/qdutils﹕ Width Align: 0 
07-03 22:34:54.630 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/qdutils﹕ Top Align: 0 
07-03 22:34:54.630 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/qdutils﹕ Height Align: 0 
07-03 22:34:54.630 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/qdutils﹕ Min ROI Width: 0 
07-03 22:34:54.630 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/qdutils﹕ Min ROI Height: 0 
07-03 22:34:54.640 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/OpenGLRenderer﹕ Enabling debug mode 0 
07-03 22:34:54.780 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/Timeline﹕ Timeline: Activity_idle id: [email protected] time:41024935 
07-03 22:34:55.810 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/dalvikvm﹕ method Landroid/support/v7/internal/widget/ListViewCompat;.lookForSelectablePosition incorrectly overrides package-private method with same name in Landroid/widget/ListView; 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 135397 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 87101 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 76341 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 254128 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 214756 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 76757 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 198184 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 157336 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 99861 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 118340 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 177572 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 207703 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 122917 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 205596 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 158852 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 245891 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 150689 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 150540 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 241554 
07-03 22:34:58.370 21092-21217/jindal5.mayank.popular_movies_14ce10032_gsc V/getimage﹕ Forecast string: 131631 
07-03 22:35:01.230 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc V/mayank﹕ San Andreas 
07-03 22:35:01.230 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/Timeline﹕ Timeline: Activity_launch_request id:jindal5.mayank.popular_movies_14ce10032_gsc time:41031383 
07-03 22:35:01.500 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc I/Timeline﹕ Timeline: Activity_idle id: [email protected] time:41031650 
07-03 22:35:02.760 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc D/AndroidRuntime﹕ Shutting down VM 
07-03 22:35:02.760 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41629db8) 
07-03 22:35:02.760 21092-21645/jindal5.mayank.popular_movies_14ce10032_gsc V/url﹕ http://api.themoviedb.org/3/movie/135397/reviews?api_key=8d7a48043ba1d3348181e2b6615cedc7 
07-03 22:35:02.770 21092-21092/jindal5.mayank.popular_movies_14ce10032_gsc E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: jindal5.mayank.popular_movies_14ce10032_gsc, PID: 21092 
    java.lang.ArrayIndexOutOfBoundsException: length=0; index=1 
      at jindal5.mayank.popular_movies_14ce10032_gsc.det_movFragment$1.onClick(det_movFragment.java:78) 
      at android.view.View.performClick(View.java:4445) 
      at android.view.View$PerformClick.run(View.java:18446) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5146) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) 
      at dalvik.system.NativeStart.main(Native Method) 
07-03 22:35:03.050 21092-21645/jindal5.mayank.popular_movies_14ce10032_gsc E/mayank﹕ I was a huge fan of the original 3 movies, they were out when I was younger, and I grew up loving dinosaurs because of them. This movie was awesome, and I think it can stand as a testimonial piece towards the capabilities that Christopher Pratt has. He nailed it. The graphics were awesome, the supporting cast did great and the t rex saved the child in me. 10\5 stars, four thumbs up, and I hope that star wars episode VII doesn't disappoint, 
07-03 22:35:03.050 21092-21645/jindal5.mayank.popular_movies_14ce10032_gsc E/mayank﹕ Overall action packed movie... But there should be more puzzles in the climax... But I really love the movie.... Excellent... 
+0

опубликовать LogCat –

+0

@Krishna Опубликовано –

+0

Он AIOE, это размер 0, но ваш доступ к 1-му элементу, из-за которого он отображается (означает, что после po stExecute только вы получаете этот элемент) до его размера 0. –

ответ

1

попробовать это,

b.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 

         getrev task=new getrev(){ 
          @Override 
          protected void onPostExecute(Void aVoid) { 
           super.onPostExecute(aVoid); 
           String[] revi_arr = rev_arr.toArray(new String[rev_arr.size()]); 
           Log.e("mayank1", revi_arr[1]); 
           Intent intent_rev = new Intent(getActivity(), det_mov_rev.class); 
           Bundle ex_rev = new Bundle(); 
           ex_rev.putStringArrayList("rev_list", rev_arr); 
           intent_rev.putExtras(ex_rev); 
           startActivity(intent_rev); 

          } 
         }; 
         task.execute(id); 

        } 
       }); 
+0

что избегать и супер.он ....... ???? –

+0

Я не понял ваш вопрос? –

+0

Что такое использование параметра Void в onClick и что делает super.onPostexecute? –

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