How to start new activity on button click


In an Android application, how do you start a new activity (GUI) when a button in another activity is clicked, and how do you pass data between these two activities?

12/22/2015 5:07:30 PM

Accepted Answer


Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters

Extras are retrieved on the other side via:

protected void onCreate(Bundle savedInstanceState) {
    Intent intent = getIntent();
    String value = intent.getStringExtra("key"); //if it's a string you stored.

Don't forget to add your new activity in the AndroidManifest.xml:

<activity android:label="@string/app_name" android:name="NextActivity"/>
5/18/2016 5:34:33 PM

Create an intent to a ViewPerson activity and pass the PersonID (for a database lookup, for example).

Intent i = new Intent(getBaseContext(), ViewPerson.class);                      
i.putExtra("PersonID", personID);

Then in ViewPerson Activity, you can get the bundle of extra data, make sure it isn't null (in case if you sometimes don't pass data), then get the data.

Bundle extras = getIntent().getExtras();
if(extras !=null)
     personID = extras.getString("PersonID");

Now if you need to share data between two Activities, you can also have a Global Singleton.

public class YourApplication extends Application 
     public SomeDataClass data = new SomeDataClass();

Then call it in any activity by:

YourApplication appState = ((YourApplication)this.getApplication());; // Do whatever you need to with data here.  Could be setter/getter or some other type of logic

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow