Pase ArrayList de fragmento a otro fragmento (extiende ListFragment) usando el paquete, error de tiempo de ejecución seListAdapter

Intenté usar la variable estática para ArrayList pero en la clase ListFragment, mientras que la depuración de su valor es nula.

Creo que ListFragment se crea antes de inicializar ArrayList, por eso es nulo, pero no estoy seguro.

Sugiera si puedo usar cualquier otra forma de enviar la ArrayList inflada desde la clase Fragment a otra clase Fragment que extiende ListFragment.

Gracias por adelantado.

Objetivo (esta es la pista, lo que hay que hacer)

En el método onStart () del Monday_fragment, use el método findByView () para encontrar la etiqueta para el botón de guardar entrada en la vista de páginas. Usando la referencia al botón, adjunte un método setOnClickListener () al botón Guardar. Necesitará guardar el tiempo y las cadenas de entrada del diario contenidas en los campos EditText en la página en este método.

Use findViewById () para obtener también una referencia al primer campo EditText y use esto para obtener el texto del campo como una cadena y guardarlo en una cadena. Repita esto para el siguiente EditText: la entrada del diario. Necesitará una variable de acceso público para almacenar una referencia para el día (lunes ... viernes), la cadena de fecha y hora y la cadena de entrada del diario. Cree una nueva clase (diaryLogs) con estos campos para contener los valores y un solo constructor que tome un int (0 lunes, 1 martes, 2 miércoles, etc.) y dos cadenas para la fecha, hora y entrada del diario para inicializar una instancia del objeto . Como se realizarán varias entradas para el mismo día, use una ArrayList <diaryLogs> para almacenar los valores. Como este valor se compartirá entre fragmentos, declare la variable como estática en la clase MainActivity. Use el método .add () de ArrayList para agregar el nuevo diaryLog a ArrayList en su método setOnClickListener (). Repita esta operación para los otros fragmentos de página del diario.

El fragmento monday_list consta de un ListView y un botón utilizado para volver a la página Monday_fragment. Cree estos objetos en el archivo xml monday_list. Cree un Monday_list_fragment que extienda la clase ListFragment. En el método onCreateView () inflar () el recurso monday_list.

En el método onCreate (), debe proporcionar una única matriz de cadenas como fuente de la lista en el método setListAdapter () utilizado para llenar ListView en la página. Las cadenas están en su variable ListArray estática en MainActivity. Sin embargo, no están en la forma requerida y debe desempaquetar los elementos de diaryLog para llegar a las cadenas requeridas. Para hacer esto, debe crear una matriz de cadenas lo suficientemente grande como para contener las cadenas para mostrar. Como esto consiste en una cadena de fecha / hora seguida de una cadena de entrada de diario, habrá dos cadenas de este tipo para cada elemento diaryLog. Use un iterador para recorrer su ListArray. Copie las cadenas de fecha y de diario en su cadena local. Luego use esta cadena local como el parámetro relevante de setListAdapter () para que ListView muestre las cadenas requeridas.

Agregue el controlador de clics en el archivo java MainActivity para que al hacer clic en el botón Guardar entradas del diario en la página de fragmentos del lunes se haga visible el Monday_list_fragment usando el FragmentManager. Agregue también un controlador de clics en MainActivity para que un clic en el botón Volver al diario del lunes regrese a la página Monday_fragment.

ACTUALIZAR Clase MainActividad

public class MainActivity extends Activity {


    public static int Monday=0;
    /*public static int Tuesday=1;
    public static int Wednesday=2;
    public static int Thursday=3;
    public static int Friday=4;
    public static String timeEntry;
    public static String entryEntered;*/
   // public static ArrayList<String> logs;
    //public static String[] entry;
    //public static String time;
    //public static String text;
    //public static String totalEntry;
    //public static ArrayList<DiaryLogs> diaryLogs;
    //public static ArrayList<DiaryLogs> test;
    //public static DiaryLogs[] entryLogs;
    //public static ArrayAdapter<DiaryLogs> monAdapter;
    //public static ArrayList< String > myStringList;
  //public static ArrayList<DiaryLogs> entryLogs;


    public static ArrayList<String> myStringList;

    public static ArrayList<String> getMyStringList() {
        return myStringList;
    }




    public void setMyStringList(ArrayList<String> myStringList) {
        this.myStringList = myStringList;
    }




    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Home_fragment hf = new Home_fragment();
        fragmentTransaction.replace(android.R.id.content, hf);
        fragmentTransaction.commit();
        setContentView(R.layout.activity_main);



        }




    public void monClick(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Monday_fragment mf = new Monday_fragment();
        fragmentTransaction.replace(android.R.id.content, mf);
        fragmentTransaction.commit();
    }

    public void tuesClick(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Tuesday_fragment tf = new Tuesday_fragment();
        fragmentTransaction.replace(android.R.id.content, tf);
        fragmentTransaction.commit();
    }

    public void wedClick(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Wednesday_fragment wf = new Wednesday_fragment();
        fragmentTransaction.replace(android.R.id.content, wf);
        fragmentTransaction.commit();
    }

    public void thursClick(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Thursday_fragment thf = new Thursday_fragment();
        fragmentTransaction.replace(android.R.id.content, thf);
        fragmentTransaction.commit();
    }

    public void friClick(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Friday_fragment ff = new Friday_fragment();
        fragmentTransaction.replace(android.R.id.content, ff);
        fragmentTransaction.commit();
    }

    public void next_Home_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Monday_fragment mf = new Monday_fragment();
        fragmentTransaction.replace(android.R.id.content, mf);
        fragmentTransaction.commit();
    }

    public void previous_Home_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Friday_fragment ff = new Friday_fragment();
        fragmentTransaction.replace(android.R.id.content, ff);
        fragmentTransaction.commit();
    }

    public void next_Mon_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Tuesday_fragment tf = new Tuesday_fragment();
        fragmentTransaction.replace(android.R.id.content, tf);
        fragmentTransaction.commit();
    }

    public void previous_Mon_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Friday_fragment ff = new Friday_fragment();
        fragmentTransaction.replace(android.R.id.content, ff);
        fragmentTransaction.commit();

    }

    public void next_Tues_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Wednesday_fragment wf = new Wednesday_fragment();
        fragmentTransaction.replace(android.R.id.content, wf);
        fragmentTransaction.commit();
    }

    public void previous_Tues_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Monday_fragment mf = new Monday_fragment();
        fragmentTransaction.replace(android.R.id.content, mf);
        fragmentTransaction.commit();

    }

    public void next_Wed_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Thursday_fragment thf = new Thursday_fragment();
        fragmentTransaction.replace(android.R.id.content, thf);
        fragmentTransaction.commit();
    }

    public void previous_Wed_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Tuesday_fragment tf = new Tuesday_fragment();
        fragmentTransaction.replace(android.R.id.content, tf);
        fragmentTransaction.commit();

    }

    public void next_Thurs_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Friday_fragment ff = new Friday_fragment();
        fragmentTransaction.replace(android.R.id.content, ff);
        fragmentTransaction.commit();
    }

    public void previous_Thurs_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Wednesday_fragment wf = new Wednesday_fragment();
        fragmentTransaction.replace(android.R.id.content, wf);
        fragmentTransaction.commit();

    }

    public void next_Fri_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Monday_fragment ff = new Monday_fragment();
        fragmentTransaction.replace(android.R.id.content, ff);
        fragmentTransaction.commit();
    }

    public void previous_Fri_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Thursday_fragment wf = new Thursday_fragment();
        fragmentTransaction.replace(android.R.id.content, wf);
        fragmentTransaction.commit();

    }

    public void home_Click(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        Home_fragment hf = new Home_fragment();
        fragmentTransaction.replace(android.R.id.content, hf);
        fragmentTransaction.commit();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
        case R.id.action_profile:
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager
                    .beginTransaction();
            Profile_fragment pf = new Profile_fragment();
            fragmentTransaction.replace(android.R.id.content, pf);
            fragmentTransaction.commit();

            break;
        case R.id.action_saveEntries:

            break;
        case R.id.action_sendAllEntries:
            //call delete dialog
            deleteDialog();
            break;
        }
        return false;
    }

    @Override
    public void onBackPressed() {
        new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher)
                .setTitle("Save entries to DB first?")
                .setNegativeButton("No", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        // if no, close app
                        MainActivity.this.finish();

                    }
                })
                .setPositiveButton(android.R.string.ok, new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        // if ok, save entries to Database

                    }
                })

                .create().show();

    }

    public void deleteDialog() {

        new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher)
                .setTitle("Are you sure? This will delete all entries.")
                .setNegativeButton(android.R.string.cancel, new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub


                    }
                })
                .setPositiveButton(android.R.string.ok, new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub


                    }
                })

                .create().show();

    }

}

Diario de clase de objeto personalizado

public class DiaryLogs {

    //public static ArrayList<DiaryLogs> entryLogs;

    String timeEntry, entryEntered;
    int day;

    // single constructor that takes an integer and two string
    public DiaryLogs(int day, String timeEntry, String entryEntered) {
        super();
        this.day = day;
        this.timeEntry = timeEntry;
        this.entryEntered = entryEntered;

    }

    public String getTimeEntry() {
        return timeEntry;
    }

    public void setTimeEntry(String timeEntry) {
        this.timeEntry = timeEntry;
    }

    public String getEntryEntered() {
        return entryEntered;
    }

    public void setEntryEntered(String entryEntered) {
        this.entryEntered = entryEntered;
    }

    public int getDay() {
        return day;
    }

    public void setDay(int day) {
        this.day = day;
    }

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return this.timeEntry + "\n" + this.entryEntered;


    }


}

ACTUALIZAR Fragmento de lunes de clase

public class Monday_fragment extends Fragment {

    //public ArrayList<String> myStringList;
    Bundle bundle;
    ArrayList<DiaryLogs> entryLogs;
    EditText timeText;
    EditText entryText;
    DiaryLogs dl;
    String timeEntry;
    String entryEntered;
    ArrayList<String> myStringList;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        return inflater.inflate(R.layout.monday_fragment, container, false);

    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        currentDateTime();
        super.onViewCreated(view, savedInstanceState);

    }

    public void currentDateTime() {
        EditText timeText = (EditText) getView().findViewById(
                R.id.dateTimeEText);
        SimpleDateFormat df = new SimpleDateFormat("d/M/yyyy:H:m");
        String dateTime = df.format(Calendar.getInstance().getTime());
        timeText.setText(dateTime);
    }

    /*public ArrayList<String> toStringList(Collection<DiaryLogs> entryLogs) {
        ArrayList<String> stringList = new ArrayList<String>();

        for (DiaryLogs myobj : entryLogs) {
            stringList.add(myobj.toString());
        }

        return stringList;
    }*/
    public ArrayList<String> toStringList(Collection<DiaryLogs> entryLogs) {
        ArrayList<String> stringList =  MainActivity.getMyStringList();

        for (DiaryLogs myobj : entryLogs) {
            String objctString = myobj.toString();

            stringList.add(objctString);
        }
        ((MainActivity)getActivity()).setMyStringList(stringList); 
        return stringList;
    }

    @Override
    public void onStart() {
        entryLogs = new ArrayList<DiaryLogs>();

        timeText = (EditText) getView().findViewById(R.id.dateTimeEText);

        entryText = (EditText) getView().findViewById(R.id.diaryEntryEText);

        Button saveBtn = (Button) getView()
                .findViewById(R.id.saveDiaryEntryBtn);
        saveBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                timeEntry = timeText.getText().toString();

                entryEntered = entryText.getText().toString();

                dl = new DiaryLogs(1, timeEntry, entryEntered);

                entryLogs.add(dl);

                //convert entryLogs to string array list
                //myStringList = toStringList(entryLogs);
                myStringList= MainActivity.getMyStringList();
                myStringList = toStringList(entryLogs);
                //myStringList.addAll(toStringList(entryLogs));

                Toast.makeText(getActivity(), "Entry added \n" + dl,
                        Toast.LENGTH_SHORT).show();
                        entryText.setText("");






            }

        }

        );
        System.out.println(entryLogs);

        Button showBtn = (Button) getView().findViewById(
                R.,id.showDiaryEntriesBtn);
        showBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                if (myStringList != null) {
                    bundle = new Bundle();
                    FragmentManager fragmentManager = getFragmentManager();
                    FragmentTransaction fragmentTransaction = fragmentManager
                            .beginTransaction();
                    Monday_list_fragment mlf = new Monday_list_fragment();

                    bundle.putStringArrayList("list", myStringList);
                    mlf.setArguments(bundle);

                    fragmentTransaction.replace(android.R.id.content, mlf);
                    fragmentTransaction.commit();
                }
                if (myStringList == null) {
                    Toast.makeText(getActivity(),
                            "No entry have been added yet", Toast.LENGTH_SHORT)
                            .show();
                }
            }
        });

        super.onStart();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }

}

Clase Monday_list_fragment

    public class Monday_list_fragment extends ListFragment {
    ArrayList<String> test;
    Bundle bundle;


    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        bundle = getArguments();
        System.out.println(bundle);
       //test = bundle.getStringArrayList("list");

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub

        return inflater
                .inflate(R.layout.monday_list_fragment, container, false);

    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {

        super.onViewCreated(view, savedInstanceState);

       /* ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, test);
        // once adapter set throws runtime error
        setListAdapter(adapter);*/

    }



}

Respuestas a la pregunta(2)

Su respuesta a la pregunta