В приложении Android, как вы начинаете новую активность (GUI), когда нажата кнопка в другой активности, и как вы передаете данные между этими двумя действиями?
Как начать новую активность при нажатии кнопки
Ответ 1
Легко.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
Экстрас извлекаются с другой стороны с помощью:
@Override
protected void onCreate(Bundle savedInstanceState) {
    Intent intent = getIntent();
    String value = intent.getStringExtra("key"); //if it a string you stored.
}
Не забудьте добавить новую активность в AndroidManifest.xml:
<activity android:label="@string/app_name" android:name="NextActivity"/>
Ответ 2
Создайте намерение активности ViewPerson и передайте PersonID (например, для поиска базы данных).
Intent i = new Intent(getBaseContext(), ViewPerson.class);                      
i.putExtra("PersonID", personID);
startActivity(i);
Затем в ActivityPerson Activity вы можете получить комплект дополнительных данных, убедитесь, что он не является нулевым (в случае, если вы иногда не передаете данные), затем получите данные.
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
     personID = extras.getString("PersonID");
}
Теперь, если вам нужно обмениваться данными между двумя действиями, вы также можете использовать глобальный синглтон.
public class YourApplication extends Application 
{     
     public SomeDataClass data = new SomeDataClass();
}
Затем вызовите его в любом виде:
YourApplication appState = ((YourApplication)this.getApplication());
appState.data.CallSomeFunctionHere(); // Do whatever you need to with data here.  Could be setter/getter or some other type of logic
Ответ 3
Текущие ответы - это здорово, но для начинающих нужен более полный ответ. Есть 3 разных способа начать новое действие в Android, и все они используют класс Intent; Намерение | Разработчики Android.
- Использование атрибута onClickдля кнопки. (Начальный)
- Назначение OnClickListener()через анонимный класс. (Средний уровень)
- Метод широкого интерфейса активности с использованием оператора switch. (Pro)
Вот ссылка на мой пример, если вы хотите следовать:
  1. Используя атрибут onClick кнопки. (Начальный)
Кнопки имеют атрибут onClick, который находится в XML файле:
<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="goToAnActivity"
    android:text="to an activity" />
<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="goToAnotherActivity"
    android:text="to another activity" />
В классе Java:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
}
public void goToAnActivity(View view) {
    Intent intent = new Intent(this, AnActivity.class);
    startActivity(intent);
}
public void goToAnotherActivity(View view) {
    Intent intent = new Intent(this, AnotherActivity.class);
    startActivity(intent);
}
Преимущество: Легко сделать на лету, модульное и может легко установить несколько onClick для одного и того же намерения.
Недостаток: затруднительная читаемость при просмотре.
  2. Назначение OnClickListener() через анонимный класс. (Средний)
Это когда вы устанавливаете отдельный setOnClickListener() для каждого button и переопределяете каждый onClick() своим собственным намерением. 
В классе Java:
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(view.getContext(), AnActivity.class);
                view.getContext().startActivity(intent);}
            });
        button2 = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(view.getContext(), AnotherActivity.class);
                view.getContext().startActivity(intent);}
            });
Преимущество: легко сделать на лету.
Недостаток: будет много анонимных классов, которые затруднят чтение при просмотре.
  3. Метод широкого интерфейса активности с использованием оператора switch. (Pro)
Это когда вы используете оператор switch для своих кнопок в методе onClick(), чтобы управлять всеми кнопками действий.
В классе Java:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
    button1 = (Button) findViewById(R.id.button1);
    button2 = (Button) findViewById(R.id.button2);
    button1.setOnClickListener(this);
    button2.setOnClickListener(this);
}
@Override
public void onClick(View view) {
    switch (view.getId()){
        case R.id.button1:
            Intent intent1 = new Intent(this, AnActivity.class);
            startActivity(intent1);
            break;
        case R.id.button2:
            Intent intent2 = new Intent(this, AnotherActivity.class);
            startActivity(intent2);
            break;
        default:
            break;
    }
Преимущество: простое управление кнопками, поскольку все намерения кнопок регистрируются в одном методе onClick()
Вторую часть вопроса о передаче данных см. в разделе Как передавать данные между действиями в приложении Android?
Ответ 4
Когда пользователь нажимает кнопку, прямо внутри XML:
<Button
         android:id="@+id/button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="TextButton"
         android:onClick="buttonClickFunction"/>
Используя атрибут  android:onClick, мы объявляем имя метода, которое должно присутствовать в родительской активности. Поэтому я должен создать этот метод внутри нашей деятельности следующим образом:
public void buttonClickFunction(View v)
{
            Intent intent = new Intent(getApplicationContext(), Your_Next_Activity.class);
            startActivity(intent);
}
Ответ 5
Intent iinent= new Intent(Homeactivity.this,secondactivity.class);
startActivity(iinent);
Ответ 6
    Intent in = new Intent(getApplicationContext(),SecondaryScreen.class);    
    startActivity(in);
    This is an explicit intent to start secondscreen activity.
Ответ 7
Эммануэль,
Я думаю, что дополнительная информация должна быть поставлена перед началом действия, иначе данные будут недоступны, если вы обращаетесь к ней в методе onCreate для NextActivity.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value);
CurrentActivity.this.startActivity(myIntent);
Ответ 8
Из отправляющей операции попробуйте следующий код
   //EXTRA_MESSAGE is our key and it value is 'packagename.MESSAGE'
    public static final String EXTRA_MESSAGE = "packageName.MESSAGE";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       ....
        //Here we declare our send button
        Button sendButton = (Button) findViewById(R.id.send_button);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //declare our intent object which takes two parameters, the context and the new activity name
                // the name of the receiving activity is declared in the Intent Constructor
                Intent intent = new Intent(getApplicationContext(), NameOfReceivingActivity.class);
                String sendMessage = "hello world"
                //put the text inside the intent and send it to another Activity
                intent.putExtra(EXTRA_MESSAGE, sendMessage);
                //start the activity
                startActivity(intent);
            }
Из принимающей операции попробуйте следующий код:
   protected void onCreate(Bundle savedInstanceState) {
 //use the getIntent()method to receive the data from another activity
 Intent intent = getIntent();
//extract the string, with the getStringExtra method
String message = intent.getStringExtra(NewActivityName.EXTRA_MESSAGE);
Затем просто добавьте следующий код в файл AndroidManifest.xml
  android:name="packagename.NameOfTheReceivingActivity"
  android:label="Title of the Activity"
  android:parentActivityName="packagename.NameOfSendingActivity"
Ответ 9
Intent i = new Intent(firstactivity.this, secondactivity.class);
startActivity(i);
Ответ 10
Вы можете попробовать этот код:
Intent myIntent = new Intent();
FirstActivity.this.SecondActivity(myIntent);
Ответ 11
Попробуйте этот простой метод.
startActivity(new Intent(MainActivity.this, SecondActivity.class));
Ответ 12
Способ запуска новых действий - трансляция намерения, и есть определенный тип намерений, который вы можете использовать для передачи данных из одного вида деятельности в другое. Моя рекомендация заключается в том, что вы просматриваете документы разработчиков Android, связанные с intents; это большая информация по этому вопросу, и есть примеры тоже.
Ответ 13
Запуск действия из другого действия - очень распространенный сценарий среди приложений для Android.
Чтобы начать занятие, вам нужен объект Intent.
Как создать Объекты Намерения?
Объект намерения принимает два параметра в своем конструкторе
- Контекст
- Имя действия, которое должно быть начато. (или полное имя пакета)
Пример:
Например, если у вас есть два действия, скажем, HomeActivity и DetailActivity, и вы хотите запустить DetailActivity из HomeActivity (HomeActivity--> DetailActivity). 
Вот фрагмент кода, который показывает, как запустить DetailActivity из
HomeActivity.
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
И все готово.
Возвращаемся к нажатию кнопки.
Button button = (Button) findViewById(R.id.someid);
button.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
         Intent i = new Intent(HomeActivity.this,DetailActivity.class);
         startActivity(i);  
      }
});
Ответ 14
Запустите еще одно действие из этой операции, и вы также можете передавать параметры через объект Bundle.
Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "[email protected]");
startActivity(intent);
Извлечь данные в другую активность (YourActivity)
String s = getIntent().getStringExtra("USER_NAME");
Ответ 15
Котлин
Первая активность
startActivity(Intent(this, SecondActivity::class.java)
  .putExtra("key", "value"))
Вторая активность
val value = getIntent().getStringExtra("key")
Предложение
Всегда кладите ключи в постоянный файл для более управляемого способа.
companion object {
    val PUT_EXTRA_USER = "user"
}
startActivity(Intent(this, SecondActivity::class.java)
  .putExtra(PUT_EXTRA_USER, "value"))
Ответ 16
Внедрите интерфейс View.OnClickListener и переопределите метод onClick.
ImageView btnSearch;
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search1);
        ImageView btnSearch = (ImageView) findViewById(R.id.btnSearch);
        btnSearch.setOnClickListener(this);
    }
@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnSearch: {
                Intent intent = new Intent(Search.this,SearchFeedActivity.class);
                startActivity(intent);
                break;
            }
Ответ 17
Хотя правильные ответы уже были предоставлены, но я здесь для поиска ответа на языке Котлин. Этот вопрос не касается специфики языка, поэтому я добавляю код для выполнения этой задачи на языке Котлин.
Вот как вы это делаете в Kotlin для andorid
testActivityBtn1.setOnClickListener{
      val intent = Intent(applicationContext,MainActivity::class.java)
      startActivity(intent)
 }
Ответ 18
Сначала возьмите кнопку в xml.
  <Button
        android:id="@+id/pre"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@mipmap/ic_launcher"
        android:text="Your Text"
        />
Сделать список кнопок.
 pre.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    });
Ответ 19
При нажатии кнопки:
loginBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent= new Intent(getApplicationContext(), NextActivity.class);
        intent.putExtra("data", value); //pass data
        startActivity(intent);
    }
});
 Чтобы получить дополнительные данные из NextActivity.class :
Bundle extra = getIntent().getExtras();
if (extra != null){
    String str = (String) extra.get("data"); // get a object
}
Ответ 20
Напишите код в своем первом действии.
button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, SecondAcitvity.class);
                       //You can use String ,arraylist ,integer ,float and all data type.
                       intent.putExtra("Key","value");
                       startActivity(intent);
                        finish();
            }
         });
В SecondActivity.class
String name = getIntent().getStringExtra("Key");
Ответ 21
Добавить виджет кнопки в xml, как показано ниже.
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
/>
После этого инициализируйте и обрабатывайте прослушиватель кликов в Activity, как показано ниже.
В операции "Создать метод":
Button button =(Button) findViewById(R.id.button); 
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
       Intent intent = new 
            Intent(CurrentActivity.this,DesiredActivity.class);
            startActivity(intent);
    }
});
Ответ 22
Самый простой способ открыть действие при нажатии кнопки:
- Создайте два действия в папке res, добавьте кнопку к первому действию и присвойте имя функции onclick.
- Там должно быть два файла Java для каждого вида деятельности.
- Ниже приведен код:
MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.content.Intent;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void goToAnotherActivity(View view) {
        Intent intent = new Intent(this, SecondActivity.class);
        startActivity(intent);
    }
}
SecondActivity.java
package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity1);
    }
}
AndroidManifest.xml (просто добавьте этот блок кода к существующему)
 </activity>
        <activity android:name=".SecondActivity">
  </activity>

