title: Parent activity loses data when onBackPressed() is called
body: <p>I have a listview in subsection activity when I click on it, it opens up tabbed activity. Now when I press up navigation button on top left corner and go back to parent activity, the listview becomes empty. But when I press back button on the keypad the parent activity does not lose its data. The listview is populated using the database.</p>
  
  <p>Please help me!</p>
  
  <p>SubSectionActivity.java (Parent Activity)</p>
  
  <pre><code>package com.suvariyaraj.algorithms;
  import android.content.Context;
  import android.content.Intent;
  import android.content.SharedPreferences;
  import android.database.Cursor;
  import android.database.sqlite.SQLiteDatabase;
  import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;
  import android.support.v7.widget.ListViewCompat;
  import android.util.Log;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.ArrayAdapter;
  import android.widget.ListView;
  import android.widget.Toast;
  import com.suvariyaraj.algorithms.Database.DBPARAM;
  import com.suvariyaraj.algorithms.Database.ExternalDbOpenHelper;
  import java.util.ArrayList;
  
  public class SubSectionActivity extends AppCompatActivity {
  
  ListView listView;
  String[] array;
  private SQLiteDatabase database;
  DBPARAM dbparam = new DBPARAM ();
  ArrayList&lt;String&gt; titles;
  String section;
  public static final String MyPREFERENCES = "MyPrefsAlgorithmApp" ;
  SharedPreferences sharedPreferences;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_sub_section);
  
      getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  
      Intent i = getIntent();
      section = i.getStringExtra("Section");
      Toast.makeText(getApplicationContext(), section, Toast.LENGTH_SHORT).show();
      sharedPreferences = getSharedPreferences ("myprefAlgoApp", Context.MODE_PRIVATE);
      SharedPreferences.Editor editor = sharedPreferences.edit ();
      editor.putString ("Section",section);
      editor.commit ();
  
  
      ExternalDbOpenHelper dbOpenHelper = new ExternalDbOpenHelper (this, dbparam.DB_NAME);
      database = dbOpenHelper.openDataBase();
  
      getDistinctSubSections ();
      ArrayAdapter adapter = new ArrayAdapter(this, R.layout.single_list_view_item, titles);
      listView = (ListView) findViewById(R.id.subsection_listview);
      listView.setAdapter(adapter);
  
      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
              Intent i = new Intent(getApplicationContext(), AlgorithmActivity.class);
              i.putExtra("Subsection", titles.get (position));
              i.putExtra ("Section", section);
              startActivity (i);
          }
  
  
      });
  }
  
  private void getDistinctSubSections() {
      titles = new ArrayList&lt;String&gt; ();
      Cursor cursor = database.query(true, dbparam.TABLE_NAME, new String[] {dbparam.COLOUMN_SUBSECTION}, dbparam.COLOUMN_SECTION+" = '"+section+"'", null, null, null, null, null);
      if(cursor!=null) {
          cursor.moveToFirst();
          if (!cursor.isAfterLast()) {
              do {
                  String name = cursor.getString(cursor.getColumnIndex(dbparam.COLOUMN_SUBSECTION));
                  titles.add(name);
              } while (cursor.moveToNext());
          }
      }
      cursor.close();
  }
  }
  </code></pre>
  
  <p>AlgorithmActivity.java (child activity)</p>
  
  <pre><code>package com.suvariyaraj.algorithms;
  
  import android.content.ClipData;
  import android.content.ClipboardManager;
  import android.content.Context;
  import android.content.Intent;
  import android.content.SharedPreferences;
  import android.database.Cursor;
  import android.database.sqlite.SQLiteDatabase;
  import android.graphics.Color;
  import android.graphics.drawable.ColorDrawable;
  import android.support.design.widget.TabLayout;
  import android.support.v4.widget.NestedScrollView;
  import android.support.v7.app.AppCompatActivity;
  import android.support.v7.widget.Toolbar;
  import android.support.v4.app.Fragment;
  import android.support.v4.app.FragmentManager;
  import android.support.v4.app.FragmentPagerAdapter;
  import android.support.v4.view.ViewPager;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.LayoutInflater;
  import android.view.Menu;
  import android.view.MenuItem;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.ImageView;
  import android.widget.LinearLayout;
  import android.widget.PopupWindow;
  import android.widget.RelativeLayout;
  import android.widget.TextView;
  import android.widget.Toast;
  
  import com.getbase.floatingactionbutton.FloatingActionButton;
  import com.getbase.floatingactionbutton.FloatingActionsMenu;
  import com.suvariyaraj.algorithms.Database.DBPARAM;
  import com.suvariyaraj.algorithms.Database.ExternalDbOpenHelper;
  
  import org.w3c.dom.Text;
  
  import java.util.ArrayList;
  
  public class AlgorithmActivity extends AppCompatActivity {
  
  /**
   * The {@link android.support.v4.view.PagerAdapter} that will provide
   * fragments for each of the sections. We use a
   * {@link FragmentPagerAdapter} derivative, which will keep every
   * loaded fragment in memory. If this becomes too memory intensive, it
   * may be best to switch to a
   * {@link android.support.v4.app.FragmentStatePagerAdapter}.
   */
  private SectionsPagerAdapter mSectionsPagerAdapter;
  
  private static SQLiteDatabase database;
  static DBPARAM dbparam = new DBPARAM ();
  ArrayList&lt;String&gt; titles;
  static ArrayList&lt;String&gt; array;
  static String section;
  static String subsection;
  
  /**
   * The {@link ViewPager} that will host the section contents.
   */
  private ViewPager mViewPager;
  String title;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_algorithm);
  
  
      Intent i = getIntent();
      subsection = i.getStringExtra("Subsection");
      section = i.getStringExtra("Section");
  
      ExternalDbOpenHelper dbOpenHelper = new ExternalDbOpenHelper (this, dbparam.DB_NAME);
      database = dbOpenHelper.openDataBase();
  
      //Toast.makeText(getApplicationContext(), title, Toast.LENGTH_SHORT).show();
  
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
      setSupportActionBar(toolbar);
      getSupportActionBar().setDisplayHomeAsUpEnabled(true);
      getSupportActionBar().setHomeButtonEnabled(true);
      // Create the adapter that will return a fragment for each of the three
      // primary sections of the activity.
      mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
  
      // Set up the ViewPager with the sections adapter.
      mViewPager = (ViewPager) findViewById(R.id.container);
      if (mViewPager != null) {
          mViewPager.setAdapter(mSectionsPagerAdapter);
      }
  
      TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
      if (tabLayout != null) {
          tabLayout.setupWithViewPager(mViewPager);
      }
  
      FloatingActionButton fab_copy = (FloatingActionButton) findViewById (R.id.fab_copy);
      FloatingActionButton fab_share = (FloatingActionButton) findViewById (R.id.fab_share);
      FloatingActionButton fab_doubt = (FloatingActionButton) findViewById (R.id.fab_doubt);
      final FloatingActionsMenu fab_menu = (FloatingActionsMenu) findViewById (R.id.fab_menu);
  
      if (fab_copy != null) {
          fab_copy.setOnClickListener (new View.OnClickListener () {
              @Override
              public void onClick(View v) {
                  String s = "C Code : \n"+array.get(1).replace ("~~", "")+ "\n\nJava Code : \n"+array.get(2).replace ("~~", "");
                  ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
                  ClipData clip = ClipData.newPlainText("Shared Content", s);
                  clipboard.setPrimaryClip(clip);
                  Toast.makeText (getApplicationContext (),"Content Copied",Toast.LENGTH_SHORT).show ();
                  if (fab_menu != null) {
                      fab_menu.collapse ();
                  }
              }
          });
      }
  
      if (fab_share != null) {
          fab_share.setOnClickListener (new View.OnClickListener () {
              @Override
              public void onClick(View v) {
                  String s = "Algorithm Name : "+subsection+"\n\nC Code : \n"+array.get(1).replace ("~~", "")+ "\n\nJava Code : \n"+array.get(2).replace ("~~", "");
                  if (fab_menu != null) {
                      fab_menu.collapse ();
                  }
                  Intent sendIntent = new Intent();
                  sendIntent.setAction(Intent.ACTION_SEND);
                  sendIntent.putExtra(Intent.EXTRA_TEXT, s);
                  sendIntent.setType("text/plain");
                  startActivity(Intent.createChooser(sendIntent, "Share using..."));
              }
          });
      }
  
      if (fab_doubt != null) {
          fab_doubt.setOnClickListener (new View.OnClickListener () {
              @Override
              public void onClick(View v) {
                  Intent i = new Intent (getApplicationContext (), DoubtActivity.class);
                  i.putExtra ("Title", title);
                  if (fab_menu != null) {
                      fab_menu.collapse ();
                  }
                  startActivity (i);
              }
          });
      }
  }
  
  
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_algorithm, menu);
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      int id = item.getItemId();
  
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
          return true;
      }
      //if (item.getItemId() == android.R.id.home) {
      //    onBackPressed ();
      //}
  
      return super.onOptionsItemSelected(item);
  }
  
  /**
   * A placeholder fragment containing a simple view.
   */
  public static class PlaceholderFragment extends Fragment {
      /**
       * The fragment argument representing the section number for this
       * fragment.
       */
      private static final String ARG_SECTION_NUMBER = "section_number";
  
      public PlaceholderFragment() {
      }
  
      /**
       * Returns a new instance of this fragment for the given section
       * number.
       */
      public static PlaceholderFragment newInstance(int sectionNumber) {
          PlaceholderFragment fragment = new PlaceholderFragment();
          Bundle args = new Bundle();
          args.putInt(ARG_SECTION_NUMBER, sectionNumber);
          fragment.setArguments(args);
          return fragment;
      }
  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
                               Bundle savedInstanceState) {
  
          View rootView = inflater.inflate(R.layout.fragment_algorithm, container, false);
          TextView textView = (TextView) rootView.findViewById(R.id.section_label);
          array = new ArrayList&lt;String&gt; ();
          array.add ("Hi from description");
          array.add ("Hi from C");
          array.add ("Hi from JAVA");
          getInformation ();
  
          NestedScrollView scrollView = (NestedScrollView) rootView.findViewById(R.id.abcscrollView);
  
          LinearLayout linearLayout = new LinearLayout (rootView.getContext ());
          LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
          linearLayout.setLayoutParams (params);
          params.bottomMargin=10;
          linearLayout.setOrientation (LinearLayout.VERTICAL);
  
          if(getArguments().getInt(ARG_SECTION_NUMBER)-1==0) {
              String temparray[] = array.get(0).split("~~");
              //array.set (0, "");
              for (int i = 0; i &lt; temparray.length; i++) {
                  if (temparray[i].startsWith("Image:")) {
                      ImageView iv = new ImageView(rootView.getContext());
                      iv.setId(i+1);
                      int itd = this.getResources().getIdentifier(temparray[i].substring(6), "drawable", getActivity().getPackageName());
                      iv.setImageResource(itd);
                      linearLayout.addView (iv);
  
                  } else {
                      TextView tv = new TextView(rootView.getContext());
                      tv.setText(temparray[i]);
                      tv.setTextSize (24);
                      tv.setId(i+1);
                      linearLayout.addView (tv);
                  }
              }
          }
  
          if(getArguments().getInt(ARG_SECTION_NUMBER)-1==1) {
              String temparray[] = array.get(1).toString ().split("~~");
              for (int i = 0; i &lt; temparray.length; i++) {
                  if (temparray[i].startsWith("Output:")) {
                      TextView tv = new TextView(rootView.getContext());
                      tv.setText(temparray[i]);
                      //tv.setTextSize (24);
                      tv.setId(i+100);
                      tv.setBackgroundColor (Color.GRAY);
  
                      linearLayout.addView (tv,params);
                  } else if (temparray[i].startsWith("Input:")) {
                      TextView tv = new TextView (rootView.getContext ());
                      tv.setText (temparray[i]);
                      //tv.setTextSize (24);
                      tv.setId (i+100);
                      tv.setBackgroundColor (Color.GRAY);
                      linearLayout.addView (tv, params);
                  }else {
                      if (temparray[i].trim ().equals ("")){
                          continue;
                      }
                      TextView tv = new TextView(rootView.getContext());
                      tv.setText(temparray[i].trim ());
                      //tv.setTextSize (24);
                      tv.setId(i+100);
                      linearLayout.addView (tv);
                  }
              }
          }
  
          if(getArguments().getInt(ARG_SECTION_NUMBER)-1==2) {
              String temparray[] = array.get(2).toString ().split("~~");
              //array.set (2, "");
              for (int i = 0; i &lt; temparray.length; i++) {
                  if (temparray[i].startsWith("Output:")) {
                      TextView tv = new TextView(rootView.getContext());
                      tv.setText(temparray[i]);
                      //tv.setTextSize (24);
                      tv.setId(i+100);
                      tv.setBackgroundColor (Color.GRAY);
  
                      linearLayout.addView (tv,params);
                  } else if (temparray[i].startsWith("Input:")) {
                      TextView tv = new TextView (rootView.getContext ());
                      tv.setText (temparray[i]);
                      //tv.setTextSize (24);
                      tv.setId (i+100);
                      tv.setBackgroundColor (Color.GRAY);
                      linearLayout.addView (tv, params);
                  }else {
                      if (temparray[i].trim ().equals ("")){
                          continue;
                      }
                      TextView tv = new TextView(rootView.getContext());
                      tv.setText(temparray[i].trim ());
                      //tv.setTextSize (24);
                      tv.setId(i+100);
                      linearLayout.addView (tv);
                  }
              }
          }
  
          NestedScrollView.LayoutParams params2 = new NestedScrollView.LayoutParams (NestedScrollView.LayoutParams.MATCH_PARENT, NestedScrollView.LayoutParams.MATCH_PARENT);
          scrollView.addView (linearLayout,params2);
  
          //textView.setText (array.get(getArguments ().getInt (ARG_SECTION_NUMBER) - 1));
          return rootView;
      }
  
      private void getInformation() {
          Cursor cursor = database.query(true, dbparam.TABLE_NAME, new String[] {dbparam.COLOUMN_DESCRIPTION, dbparam.COLOUMN_CODEC, dbparam.COLOUMN_CODEJAVA}, dbparam.COLOUMN_SECTION+"='"+section+"' AND "+dbparam.COLOUMN_SUBSECTION+"='"+subsection+"'", null, null, null, null, null);
          if(cursor!=null) {
              cursor.moveToFirst();
              if (!cursor.isAfterLast()) {
                  do {
                      String discription = cursor.getString(cursor.getColumnIndex(dbparam.COLOUMN_DESCRIPTION));
                      array.set(0, discription);
                      String codeC = cursor.getString(cursor.getColumnIndex(dbparam.COLOUMN_CODEC));
                      array.set(1, codeC);
                      String codeJAVA = cursor.getString(cursor.getColumnIndex(dbparam.COLOUMN_CODEJAVA));
                      array.set(2, codeJAVA);
                  } while (cursor.moveToNext());
              }
              cursor.close();
          }
      }
  }
  
  /**
   * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
   * one of the sections/tabs/pages.
   */
  public class SectionsPagerAdapter extends FragmentPagerAdapter {
  
      public SectionsPagerAdapter(FragmentManager fm) {
          super(fm);
      }
  
      @Override
      public Fragment getItem(int position) {
          // getItem is called to instantiate the fragment for the given page.
          // Return a PlaceholderFragment (defined as a static inner class below).
          return PlaceholderFragment.newInstance(position + 1);
      }
  
      @Override
      public int getCount() {
          // Show 3 total pages.
          return 3;
      }
  
      @Override
      public CharSequence getPageTitle(int position) {
          switch (position) {
              case 0:
                  return "Description";
              case 1:
                  return "C";
              case 2:
                  return "Java";
          }
          return null;
      }
  
  
  }
  }
  </code></pre>