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();
}
}
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();
}