Текущие ответы - это здорово, но для начинающих нужен более полный ответ.Есть 3 различных способа начать новое действие в Android, и все они используют класс Intent
; Намерение |Разработчики Android .
- Использование атрибута
onClick
кнопки.(Начинающий) - Назначение
OnClickListener()
через анонимный класс.(Средний уровень) - Метод интерфейса широкого действия с использованием оператора
switch
.(Pro)
Вот ссылка на мой пример, если вы хотите следовать: https://github.com/martinsing/ToNewActivityButtons
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
s для одного и того же намерения.
Недостаток : Трудность чтения при просмотре.
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;
}
Advantage : простое управление кнопками, поскольку все намерения кнопок регистрируются в одном методе onClick()
В отношении второй части вопроса о передаче данных см. Как передавать данные между действиями в приложении Android?