Multiple Activities

We can switch and pass variables between multiple activities using Intent class

Create a new activity File -> New -> activity and choose the required activity

This will create another activity and layout file

Activity 1

public class MainActivity extends AppCompatActivity {

    // onCLick method for a button in activity layout 1
    public void toSecondActivity(View view){

        //Create Intent instance by passing current Context and context of the other activity
        Intent intent = new Intent(getApplicationContext(),Main2Activity.class);
        //pass variables
        intent.putExtra("username","rob");
        //jump to activity
        startActivity(intent);

    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


    }
}

Activity 2

public class Main2Activity extends AppCompatActivity {

    // onclick method to go back to first activity                                                  
    public void toFirstActivity(View view){
        Intent intent = new Intent(getApplicationContext(),MainActivity.class);
        startActivity(intent);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        //Get the intent that got to this activity
        Intent  intent = getIntent();
        //get the variable from other activity
        Toast.makeText(this,intent.getStringExtra("username"),Toast.LENGTH_LONG).show();
    }
}

Passing data between activities

Recall that each activity is a class

Static variables and methods can be accessed between classes without having to instantiate

Activity 1

public class MainActivity extends AppCompatActivity {

    static ArrayList<String> places = new ArrayList<>();
    static ArrayList<LatLng> latlngs = new ArrayList<>();
    static ListView listview;
    private static ArrayAdapter arrayAdapter;

    ...

     @Override
    protected void onCreate(Bundle savedInstanceState){
    //instantiate arrayAdapter. 'this' cannot be used under static methods
    arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,places);
   }

    public static void updateListView(){
        arrayAdapter.notifyDataSetChanged();
    }

Activity 2

public void onMapReady(GoogleMap googleMap) {
                MainActivity.places.add(addr);
                MainActivity.latlngs.add(latLng);
                MainActivity.updateListView();
 }