Android | Неявные и явные намерения с примерами
Предварительные условия:
- Основы разработки приложений для Android для начинающих
- Руководство по установке и настройке Android Studio
- Android | Начиная с первого проекта приложения / Android
- Android | Запуск вашего первого приложения для Android
В этой статье рассказывается о неявных и явных намерениях и о том, как их использовать в приложении для Android.
Что такое намерение в Android?
Intent - это объект обмена сообщениями, который передается между такими компонентами, как службы, поставщики контента, действия и т. Д. Обычно метод startActivity () используется для вызова любого действия.
Некоторые из общих функций намерения:
- Начать обслуживание
- Запуск деятельности
- Показать веб-страницу
- Показать список контактов
- Трансляция сообщений
Методы и их описание
Методы | Описание |
---|---|
Context.startActivity () | Это делается для запуска нового действия или превращения существующего в действие. |
Context.startService () | Это запуск новой службы или предоставление инструкций для существующей службы. |
Context.sendBroadcast () | Это необходимо для доставки сообщения приемникам широковещательной передачи. |
Классификация намерений
Есть два типа намерений
1. Неявное намерение 2. Явное намерение
- Неявное намерение: при использовании неявного намерения компонент не может быть указан. Действие, которое должно быть выполнено, объявляется неявным намерением. Затем операционная система Android отфильтрует компонент, который будет реагировать на действие.
НапримерВ приведенном выше примере компонент не указан, вместо этого выполняется действие, т.е. веб-страница будет открыта. По мере того, как вы вводите имя желаемой веб-страницы и нажимаете кнопку «ЩЕЛЧОК». Ваша веб-страница открыта.
Как создать приложение для Android для открытия веб-страницы с использованием неявного намерения (с примером)
- Шаг 1. Создайте файл XML и файл Java. Пожалуйста, ознакомьтесь с предварительными условиями, чтобы узнать больше об этом шаге.
- Шаг 2: Откройте файл «activity_main.xml» и добавьте следующие виджеты в макет ограничения.
1. EditText для ввода текста.
2. Кнопка для открытия веб-страницы.
Кроме того, назначьте идентификаторы для каждого компонента, как показано на изображении и в коде ниже. Назначенный идентификатор для компонента помогает идентифицировать компонент и может быть легко использован в файлах Java.
Синтаксис:android: id = "@ + id / id_name"
Вот данные идентификаторы: editText1 , button1
Это сделает пользовательский интерфейс приложения. - Шаг 3: Теперь, после пользовательского интерфейса, этот шаг создаст серверную часть приложения. Для этого откройте файл MainActivity.java и создайте экземпляр компонента (Button), созданного в XML-файле, с помощью метода findViewById (). Этот метод связывает созданный объект с компонентами пользовательского интерфейса с помощью назначенного идентификатора.
Общий синтаксис:ComponentType object = (ComponentType)findViewById(R.id.IdOfTheComponent);
Синтаксис используемых компонентов (EditText, Button):
EditText editText = (EditText)findViewById(R.id.editText1);
Button button = (Button)findViewById(R.id.button1); - Шаг 4: Этот шаг включает настройку операций для отображения тост-сообщения. Эти операции заключаются в следующем:
а). Сначала добавьте кнопку прослушивания, и эта кнопка откроет веб-страницу.
button.setOnClickListener(new View.OnClickListener() {});б). Создайте переменную типа String для хранения значения EditText. Значение принимается и преобразуется в строку.
String url = editText1.getText().toString();
в). Создайте объект Intent класса MainActivity.java, чтобы открыть веб-страницу.
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
г). Метод startActivity () начинает вызывать веб-страницу для открытия, заданную намерением.
startActivity(intent);
Поэтому фрагмент кода для неявного намерения:
Строка url = editText1.getText (). ToString (); Намерение намерения = новое намерение (Intent.ACTION_VIEW, Uri.parse (url)); startActivity (намерение);
Полный код неявного намерения
activity_main.xml
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
android.support.constraint.ConstraintLayout
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
".MainActivity"
>
<!-- add an edittext to input text -->
<
EditText
android:id
=
"@+id/editText1"
android:layout_width
=
"0dp"
android:layout_height
=
"wrap_content"
android:layout_alignParentTop
=
"true"
android:layout_centerHorizontal
=
"true"
android:layout_marginTop
=
"136dp"
android:ems
=
"10"
app:layout_constraintEnd_toEndOf
=
"parent"
app:layout_constraintStart_toStartOf
=
"parent"
app:layout_constraintTop_toTopOf
=
"parent"
/>
<!-- add a button for click -->
<
Button
android:id
=
"@+id/button1"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_below
=
"@+id/editText1"
android:layout_centerHorizontal
=
"true"
android:layout_marginTop
=
"49dp"
android:layout_marginEnd
=
"132dp"
android:text
=
"Click"
app:layout_constraintEnd_toEndOf
=
"@+id/editText1"
app:layout_constraintTop_toBottomOf
=
"@+id/editText1"
/>
</
android.support.constraint.ConstraintLayout
>
MainActivity.java
package
org.geeksforgeeks.implicitIntent_example;
import
android.app.Activity;
import
android.content.Intent;
import
android.net.Uri;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.Button;
import
android.widget.EditText;
public
class
MainActivity
extends
Activity {
@Override
protected
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Bind the components to their respective objects
// by assigning their IDs
// with the help of findViewById() method
final
EditText editText1 = (EditText)findViewById(R.id.editText1);
Button button = (Button)findViewById(R.id.button1);
// implementation of onClick event for Implicit Intent
button.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v)
{
// performing webpage open action
String url = editText1.getText().toString();
Intent intent =
new
Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
}
});
}
}
Выход:
- Шаг 1. Создайте файл XML и файл Java. Пожалуйста, ознакомьтесь с предварительными условиями, чтобы узнать больше об этом шаге.
- Явное намерение: используя явное намерение, можно указать любой другой компонент. Другими словами, целевой компонент указан явным намерением. Таким образом, будет вызван только указанный целевой компонент.
Например:
В приведенном выше примере есть два действия (FirstActivity, SecondActivity). Когда вы нажимаете кнопку «ПЕРЕЙТИ К ДРУГУЮ ДЕЯТЕЛЬНОСТЬ» в первом действии, вы переходите ко второму занятию. Когда вы нажимаете кнопку «ПЕРЕЙТИ К ДОМАШНЕМУ ЗАДАНИЮ» во втором занятии, вы переходите к первому занятию. Это делается с помощью явного намерения.
Как создать приложение для Android для перехода к следующему действию с использованием явного намерения (с примером)
- Шаг 1. Создайте файл XML и файл Java. Пожалуйста, ознакомьтесь с предварительными условиями, чтобы узнать больше об этом шаге.
- Шаг 2: Откройте файл «activity_main.xml» и добавьте следующие виджеты в макет ограничения.
1. Кнопка перехода ко второму действию.
2. TextView для написания текста.
Кроме того, назначьте идентификаторы для каждого компонента (Button, TextView), как показано на изображении и в коде ниже. Назначенный идентификатор для компонента помогает в идентификации компонента и может быть легко использован в файлах Java.
Синтаксис:android: id = "@ + id / id_name"
Вот данные идентификаторы: Button01 , TextView01 .
Это сделает пользовательский интерфейс приложения. - Шаг 3: Теперь, после пользовательского интерфейса, этот шаг создаст серверную часть приложения. Для этого откройте файл MainActivity.java и создайте экземпляр компонента (Button, TextView), созданного в XML-файле, с помощью метода findViewById (). Этот метод привязывает созданный объект к компонентам пользовательского интерфейса с помощью назначенного идентификатора.
Общий синтаксис:
ComponentType object = (ComponentType)findViewById(R.id.IdOfTheComponent);
Синтаксис используемых компонентов (Button, TextView):
1. Button button = (Button)findViewById(R.id.Button01);
2. TextView textView = (TextView)findViewById(R.id.TextView01); - Шаг 4: Этот шаг включает настройку операций для создания явного намерения. Эти операции заключаются в следующем:
а. Сначала добавьте кнопку слушателя, и с помощью этой кнопки вы перейдете к другому действию.
button1.setOnClickListener(new View.OnClickListener() {});
б. Теперь создайте намерение.
Intent i = new Intent(getApplicationContext(), SecondActivityName.class);Параметры: имеет два параметра:
- getApplicationContext (): возвращает контекст для всего приложения.
- OtherActivityName.class: здесь следует использовать название вашей активности.
Поэтому код для явного намерения:
Intent i = новое намерение (getApplicationContext (), ActivityTwo.class);
c. Теперь начните целевую деятельность.
startActivity (i): запускает целевую активность.
Фрагмент кода для явного намерения:Intent i = новое намерение (getApplicationContext (), ActivityTwo.class); startActivity (я);
- Шаг 5: Теперь нам нужно создать второе действие в качестве целевого.
Шаги по созданию второго действия следующие:android project > File > new > Activity > Empty Activity
- Шаг 6: Теперь откройте второй XML-файл.
Добавьте Button и TextView для возврата к домашней активности и для написания текста об активности соответственно. Назначьте идентификатор кнопке и текстовому просмотру. Второе действие показано ниже:- Шаг 7. Теперь откройте java-файл второго действия и выполните следующую операцию.
а. Сначала добавьте кнопку прослушивания, и с помощью этой кнопки вы перейдете к домашнему занятию.
button1.setOnClickListener(new View.OnClickListener() {});б. Теперь создайте намерение.
Intent i = new Intent(getApplicationContext(), OtherActivityName.class);Поэтому код для явного намерения:
Intent i = новое намерение (getApplicationContext (), MainActivity.class);
c. Теперь начните целевую деятельность.
startActivity(i):This starts target activity.
Код для отображения тост-сообщения:
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);- Шаг 8: Теперь запустите приложение и действуйте следующим образом:
Когда приложение открыто, оно отображает кнопку «ПЕРЕЙТИ К ДРУГИМ ДЕЙСТВИЯМ».
Нажмите кнопку «ПЕРЕЙТИ К ДРУГИМ ДЕЙСТВИЯМ».
Затем вы перейдете ко второму занятию.
Кроме того, вы получите кнопку «ПЕРЕЙТИ К ДОМАШНЕМУ ЗАДАНИЮ» во втором действии. Когда вы нажмете на нее, вы перейдете к домашнему занятию.
Полный код явного намерения
activity_main.xml
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
android.support.constraint.ConstraintLayout
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
"org.geeksforgeeks.explicit_intent.MainActivity"
>
<!-- add a button to move to next activity -->
<
Button
android:id
=
"@+id/Button01"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_alignParentLeft
=
"true"
android:layout_below
=
"@+id/TextView01"
android:layout_marginTop
=
"209dp"
android:onClick
=
"onClick"
android:text
=
"Go To Other Activity"
app:layout_constraintEnd_toEndOf
=
"parent"
app:layout_constraintStart_toStartOf
=
"parent"
app:layout_constraintTop_toTopOf
=
"parent"
tools:ignore
=
"OnClick"
/>
<!-- add a TextView to write some text on activity -->
<
TextView
android:id
=
"@+id/TextView01"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_alignLeft
=
"@+id/Button01"
android:layout_alignParentTop
=
"true"
android:layout_marginTop
=
"44dp"
android:minHeight
=
"60dip"
android:text
=
"This is First Activity"
android:textSize
=
"20sp"
app:layout_constraintEnd_toEndOf
=
"parent"
app:layout_constraintStart_toStartOf
=
"parent"
app:layout_constraintTop_toTopOf
=
"parent"
/>
</
android.support.constraint.ConstraintLayout
>
MainActivity.java
package
org.geeksforgeeks.explicit_intent;
import
android.os.Bundle;
import
android.app.Activity;
import
android.content.Intent;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
public
class
MainActivity
extends
Activity {
// Defining the object for button
Button button1;
@Override
public
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Bind the components to their respective objects
// by assigning their IDs
// with the help of findViewById() method
button1 = (Button)findViewById(R.id.Button01);
button1.setOnClickListener(
new
OnClickListener() {
public
void
onClick(View view)
{
// Creating explicit intent
Intent i =
new
Intent(getApplicationContext(),
ActivityTwo.
class
);
startActivity(i);
}
});
}
}
activity_two.xml
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
android.support.constraint.ConstraintLayout
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
"org.geeksforgeeks.explicit_intent.ActivityTwo"
>
<!-- add a button for moving to home activity -->
<
Button
android:id
=
"@+id/Button01"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_below
=
"@+id/TextView01"
android:layout_alignParentLeft
=
"true"
android:layout_marginBottom
=
"220dp"
android:onClick
=
"onClick"
android:text
=
"Go to Home Activity"
app:layout_constraintBottom_toBottomOf
=
"parent"
app:layout_constraintEnd_toEndOf
=
"parent"
app:layout_constraintHorizontal_bias
=
"0.533"
app:layout_constraintStart_toStartOf
=
"parent"
tools:ignore
=
"OnClick"
/>
<!-- add a TextView to write some text on activity -->
<
TextView
android:id
=
"@+id/TextView01"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_alignLeft
=
"@+id/Button01"
android:layout_alignParentTop
=
"true"
android:layout_margin
=
"71dp"
android:layout_marginTop
=
"144dp"
android:layout_marginEnd
=
"88dp"
android:layout_marginRight
=
"88dp"
android:minHeight
=
"60dip"
android:text
=
"This is Second Activity"
android:textSize
=
"20sp"
app:layout_constraintEnd_toEndOf
=
"parent"
app:layout_constraintTop_toTopOf
=
"parent"
/>
</
android.support.constraint.ConstraintLayout
>
ActivityTwo.java
package
org.geeksforgeeks.explicit_intent;
import
android.app.Activity;
import
android.content.Intent;
import
android.os.Bundle;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
public
class
ActivityTwo
extends
Activity {
// Defining the object for button
Button button1;
@Override
public
void
onCreate(Bundle bundle)
{
super
.onCreate(bundle);
setContentView(R.layout.activity_two);
// Bind the components to their respective objects
// by assigning their IDs
// with the help of findViewById() method
button1 = (Button)findViewById(R.id.Button01);
button1.setOnClickListener(
new
OnClickListener() {
public
void
onClick(View view)
{
// Creating explicit intent
Intent i =
new
Intent(getApplicationContext(),
MainActivity.
class
);
startActivity(i);
}
});
}
}
Выход:
- Шаг 1. Создайте файл XML и файл Java. Пожалуйста, ознакомьтесь с предварительными условиями, чтобы узнать больше об этом шаге.