0

I want to send arraylist to fragment class,but cant send using constructor.Then try using parcelable(1st time used) and still error(intent not stored arraylist).Hope you guys can help me solve this problem.Thank you.

ERROR

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: net.simplifiedcoding.androidtablayout, PID: 20606
                  java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
                      at net.simplifiedcoding.androidtablayout.BaseAdapter.getCount(BaseAdapter.java:33)
                      at android.widget.ListView.setAdapter(ListView.java:487)
                      at net.simplifiedcoding.androidtablayout.Tab3.onCreateView(Tab3.java:46)
                      at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
                      at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
                      at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
                      at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
                      at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
                      at android.support.v4.view.ViewPager.populate(ViewPager.java:1106)
                      at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:552)
                      at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:514)
                      at android.support.v4.view.ViewPager.setCurrent

MainActivity.java

package net.simplifiedcoding.androidtablayout;

import android.os.Bundle;
import android.os.StrictMode;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener{

    private TabLayout tabLayout;
    private ViewPager viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //initialize toolbar
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        toolbar.setNavigationIcon(R.mipmap.ic_launcher_round);
        setSupportActionBar(toolbar);

        //initialize tablayout
        tabLayout = (TabLayout) findViewById(R.id.tabLayout);

        //create create two tab and add those tab inside tablayout object (content not included,just tab)
        tabLayout.addTab(tabLayout.newTab().setText("Aduan"));
        tabLayout.addTab(tabLayout.newTab().setText("Semakan"));
        tabLayout.addTab(tabLayout.newTab().setText("Notis"));
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

        //initialize viewpager
        viewPager = (ViewPager) findViewById(R.id.pager);


        //initialize fragment pager adapter
        Pager adapter = new Pager(getSupportFragmentManager(), tabLayout.getTabCount(),MainActivity.this);
        viewPager.setAdapter(adapter);
        tabLayout.setOnTabSelectedListener(this);

    }

    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
}

NotisBackgroundTask.java

package net.simplifiedcoding.androidtablayout.volley;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;

import net.simplifiedcoding.androidtablayout.MainActivity;
import net.simplifiedcoding.androidtablayout.Tab3;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

/**
 * Created by User on 1/24/2017.
 */

public class NotisBackgroundTask {
    Context context;
    ArrayList<Notis> arrayList = new ArrayList<>();


    public NotisBackgroundTask(Context context){
        this.context = context;
        callNotisFromServer();
        parcelableProcess();
    }

    public void callNotisFromServer(){

        // make json request (volley)

        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.POST, "http://192.168.1.106/android/notis_android.php", (String) null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                //get all information from json
                int count = 0;
                while(count <response.length()){
                    try{
                        JSONObject jsonObject = response.getJSONObject(count);
                        Notis notis = new Notis(jsonObject.getString("time_mula"),
                                jsonObject.getString("time_tamat"),jsonObject.getString("dt_mula"),jsonObject.getString("dt_tamat"),
                                jsonObject.getString("notis_sebab"),jsonObject.getString("notis_lokasi"));
                        arrayList.add(notis);
                        count++;
                    }catch (JSONException e){
                        Log.d("message:",e.getMessage());
                    }
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d("Volley ERROR:",error.getMessage());
            }
        });
        MySingleton.getmInstances(context).addRequestQueue(jsonArrayRequest);


    }


    public void parcelableProcess(){
       Intent intent = new Intent();
       intent.putParcelableArrayListExtra("arraylistNotis",this.getArrayList());

    }
    public ArrayList<Notis> getArrayList() {
        return arrayList;
    }

}

Tab3.java

package net.simplifiedcoding.androidtablayout;

import android.content.Intent;
import android.support.v4.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import net.simplifiedcoding.androidtablayout.volley.Notis;
import net.simplifiedcoding.androidtablayout.volley.NotisBackgroundTask;

import java.util.ArrayList;

/**
 * Created by User on 1/24/2017.
 */

public class Tab3 extends Fragment {

    ArrayList<Notis> arrayList;
    ListView listView;
    Context context;

    public Tab3(){

    }

    @Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    // return super.onCreateView(inflater, container, savedInstanceState);


        View view = inflater.inflate(R.layout.tab3,null);

        arrayList = getActivity().getIntent().getParcelableArrayListExtra("arraylistNotis");
        context  =  getActivity().getApplicationContext();

        listView = (ListView) view.findViewById(R.id.papar_notis_listview_id);
        listView.setAdapter(new BaseAdapter(context,arrayList));


        return view;
    }


}

BaseAdapter.java

package net.simplifiedcoding.androidtablayout;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import net.simplifiedcoding.androidtablayout.volley.Notis;

import org.w3c.dom.Text;

import java.util.ArrayList;

/**
 * Created by User on 1/25/2017.
 */

public class BaseAdapter extends android.widget.BaseAdapter {

    Context context;
    ArrayList<Notis> arrayList;
    private static LayoutInflater layoutInflater;

    public BaseAdapter(Context context, ArrayList<Notis> arrayList){
        this.context = context;
        this.arrayList = arrayList;
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        return arrayList.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public class Holder{
        TextView txt_time_mula;
        TextView txt_time_tamat;
        TextView txt_dt_mula;
        TextView txt_dt_tamat;
        TextView txt_notis_sebab;
        TextView getTxt_notis_lokasi;
    }
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final Notis notis = arrayList.get(position);
        Holder holder = new Holder();
        View rowView = layoutInflater.inflate(R.layout.notis_row_list,null);
        holder.txt_time_mula = (TextView) rowView.findViewById(R.id.txt_dt_mula_id);
        holder.txt_time_tamat = (TextView) rowView.findViewById(R.id.txt_time_tamat_id);
        holder.txt_dt_mula = (TextView) rowView.findViewById(R.id.txt_dt_mula_id);
        holder.txt_dt_tamat = (TextView) rowView.findViewById(R.id.txt_dt_tamat_id);
        holder.txt_notis_sebab = (TextView) rowView.findViewById(R.id.txt_notis_sebab_id);
        holder.getTxt_notis_lokasi = (TextView) rowView.findViewById(R.id.txt_notis_lokasi_id);

        holder.txt_time_mula.setText(notis.getTime_mula());
        holder.txt_time_tamat.setText(notis.getTime_tamat());
        holder.txt_dt_mula.setText(notis.getDt_mula());
        holder.txt_dt_tamat.setText(notis.getDt_tamat());
        holder.txt_notis_sebab.setText(notis.getNotis_sebab());
        holder.getTxt_notis_lokasi.setText(notis.getNotis_lokasi());

        rowView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context,"your click"+notis.getNotis_sebab(),Toast.LENGTH_SHORT).show();
            }
        });

        return rowView;
    }
}
khoi
  • 940
  • 1
  • 14
  • 29
  • In your Async task you are returning result before it is completed, so the resulst is null and your app crashes – X3Btel Jan 25 '17 at 08:50
  • initialization your array list like this `ArrayList arrayList=new ArrayList<>();` – Manohar Jan 25 '17 at 08:55
  • yes,the problem is i want to send arraylist to another class using parcerable.but when i check the parcerable again,the arraylist is empty and that mean the arraylist is not sending at all.this is my first time using parcerable.i dont know my code its right or wrong. – khoi Jan 25 '17 at 08:55

0 Answers0