Неявные и явные намерения в Android с примерами
Предпосылки:
- Основы разработки приложений для Android для начинающих
- Руководство по установке и настройке Android Studio
- Андроид | Начиная с первого проекта приложения/андроида
- Андроид | Запуск вашего первого приложения для Android
Эта статья призвана рассказать о неявных и явных намерениях и о том, как их использовать в приложении для Android.
Что такое намерение в Android?
Намерение — это объект обмена сообщениями, который передается между такими компонентами, как службы, поставщики контента, действия и т. д. Обычно метод startActivity() используется для вызова любого действия. Некоторые из общих функций намерения:
- Запустить службу
- Запуск активности
- Показать веб-страницу
- Показать список контактов
- Рассылка сообщений
Методы и их описание
Методы | Описание |
---|---|
Контекст.startActivity() | Это нужно, чтобы запустить новую активность или заставить существующую активность действовать. |
Контекст.startService() | Это нужно для запуска новой службы или доставки инструкций для существующей службы. |
Контекст.sendBroadcast() | Это должно доставить сообщение широковещательным приемникам. |
Классификация намерений:
В андроиде есть два типа намерений
- Неявное намерение
- Явное намерение
Неявное намерение
Используя неявное намерение, компоненты не могут быть указаны. Действие, которое должно быть выполнено, объявляется неявным намерением. Затем операционная система Android будет отфильтровывать компоненты, которые будут реагировать на действие. Например,
В приведенном выше примере компонент не указан, вместо этого выполняется действие, то есть веб-страница будет открыта. Когда вы вводите название нужной веб-страницы и нажимаете кнопку «НАЖМИТЕ». Ваша веб-страница открыта.
Пошаговая реализация
Создание приложения Android для открытия веб-страницы с использованием неявного намерения
Шаг 1. Создайте новый проект в Android Studio.
Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio». Код для этого был предоставлен как на Java, так и на языке программирования Kotlin для Android. Создайте файл XML и файл Java. Пожалуйста, обратитесь к предварительным требованиям, чтобы узнать больше об этом шаге.
Шаг 2: Работа с файлами XML
Далее перейдите к файлу activity_main.xml , представляющему UI проекта. Ниже приведен код файла activity_main.xml . Комментарии добавляются внутри кода, чтобы понять код более подробно.
Синтаксис:
android:id="@+id/id_name"
XML
<? xml version = "1.0" encoding = "utf-8" ?> < androidx.constraintlayout.widget.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".MainActivity" > < EditText android:id = "@+id/editText" android:layout_width = "match_parent" android:layout_height = "wrap_content" app:layout_constraintBottom_toBottomOf = "parent" app:layout_constraintEnd_toEndOf = "parent" app:layout_constraintStart_toStartOf = "parent" app:layout_constraintTop_toTopOf = "parent" /> < Button android:id = "@+id/btn" android:text = "Search" android:onClick = "search" android:layout_width = "wrap_content" android:layout_height = "wrap_content" app:layout_constraintBottom_toBottomOf = "parent" app:layout_constraintEnd_toEndOf = "parent" app:layout_constraintStart_toStartOf = "parent" app:layout_constraintTop_toBottomOf = "@+id/editText" /> </ androidx.constraintlayout.widget.ConstraintLayout > |
Шаг 3: Работа с файлом MainActivity
Теперь мы создадим Backend приложения. Для этого откройте файл MainActivity и создайте экземпляр компонента (кнопки), созданного в файле XML, с помощью метода findViewById(). Этот метод привязывает созданный объект к компонентам пользовательского интерфейса с помощью назначенного идентификатора.
Синтаксис:
ComponentType object = (ComponentType) findViewById(R.id.IdOfTheComponent);
Java
import androidx.appcompat.app.AppCompatActivity; 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 AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { EditText editText; Button button; super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = findViewById(R.id.btn); editText = (EditText) findViewById(R.id.editText); button.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { String url=editText.getText().toString(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); } }); } } |
Kotlin
import android.content.Intent import android.net.Uri import android.os.Bundle import android.widget.Button import android.widget.EditText import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { lateinit var editText: EditText override fun onCreate(savedInstanceState: Bundle?) { super .onCreate(savedInstanceState) setContentView(R.layout.activity_main) editText = findViewById(R.id.editText) } fun search() { val url = editText.text.toString() val urlIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) startActivity(urlIntent) } } |
Явное намерение
Используя явное намерение, можно указать любой другой компонент. Другими словами, целевой компонент определяется явным намерением. Таким образом, будет вызываться только указанный целевой компонент. Например:
В приведенном выше примере есть два действия (FirstActivity и SecondActivity). Когда вы нажимаете кнопку «ПЕРЕХОД К ДРУГОЙ ДЕЯТЕЛЬНОСТИ» в первом действии, вы переходите ко второму действию. Когда вы нажимаете кнопку «ПЕРЕХОД НА ДОМАШНЕЕ ЗАНЯТИЕ» во втором упражнении, вы переходите к первому упражнению. Это делается с помощью Explicit Intent.
Пошаговая реализация
Как создать приложение для Android, чтобы перейти к следующему действию, используя явное намерение (с примером)
Шаг 1. Создайте новый проект в Android Studio.
Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio». Код для этого был предоставлен как на Java, так и на языке программирования Kotlin для Android. Пожалуйста, обратитесь к предварительным требованиям, чтобы узнать больше об этом шаге.
Шаг 2: Работа с файлом activity_main.xml
Далее переходим к файлу activity_main.xml , представляющему UI проекта. Ниже приведен код файла activity_main.xml . Комментарии добавляются внутри кода, чтобы понять код более подробно.
Синтаксис:
android:id="@+id/id_name"
XML
<? xml version = "1.0" encoding = "utf-8" ?> < androidx.constraintlayout.widget.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".MainActivity" > < TextView android:id = "@+id/editText" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:text = "Welcome to GFG Home Screen" android:textAlignment = "center" android:textSize = "28sp" app:layout_constraintBottom_toBottomOf = "parent" app:layout_constraintEnd_toEndOf = "parent" app:layout_constraintHorizontal_bias = "0.0" app:layout_constraintStart_toStartOf = "parent" app:layout_constraintTop_toTopOf = "parent" /> < Button android:id = "@+id/btn1" android:text = "Go to News Screen" android:onClick = "newsScreen" android:layout_width = "wrap_content" android:layout_height = "wrap_content" app:layout_constraintBottom_toBottomOf = "parent" app:layout_constraintEnd_toEndOf = "parent" app:layout_constraintStart_toStartOf = "parent" app:layout_constraintTop_toBottomOf = "@+id/editText" /> </ androidx.constraintlayout.widget.ConstraintLayout > |
Шаг 3: Работа с файлом MainActivity
Теперь мы создадим Backend приложения. Для этого откройте файл MainActivity и создайте экземпляр компонента (Button, TextView), созданного в файле XML, с помощью метода findViewById(). Этот метод привязывает созданный объект к компонентам пользовательского интерфейса с помощью назначенного идентификатора.
Синтаксис:
ComponentType object = (ComponentType) findViewById(R.id.IdOfTheComponent); Intent i = new Intent(getApplicationContext(), <className>); startActivity(i);
Java
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void newsScreen(View view) { Intent i = new Intent(getApplicationContext(), MainActivity2. class ); startActivity(i); } } |
Kotlin
import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super .onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun newsScreen() { val i = Intent(applicationContext, MainActivity2:: class .java) startActivity(i) } } |
Шаг 4: Работа с файлом activity_main2.xml
Теперь нам нужно создать второе действие в качестве целевого действия. Шаги для создания второго действия: «Файл» > «Создать» > «Действие» > «Пустое действие».
Далее переходим к файлу activity_main2.xml , представляющему UI проекта. Ниже приведен код файла activity_main2.xml . Комментарии добавляются внутри кода, чтобы понять код более подробно.
XML
<? xml version = "1.0" encoding = "utf-8" ?> < androidx.constraintlayout.widget.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".MainActivity2" > < TextView android:id = "@+id/editText" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:text = "Welcome to GFG News Screen" android:textAlignment = "center" android:textSize = "28sp" app:layout_constraintBottom_toBottomOf = "parent" app:layout_constraintEnd_toEndOf = "parent" app:layout_constraintHorizontal_bias = "0.0" app:layout_constraintStart_toStartOf = "parent" app:layout_constraintTop_toTopOf = "parent" /> < Button android:id = "@+id/btn2" android:text = "Go to Home Screen" android:onClick = "homeScreen" android:layout_width = "wrap_content" android:layout_height = "wrap_content" app:layout_constraintBottom_toBottomOf = "parent" app:layout_constraintEnd_toEndOf = "parent" app:layout_constraintStart_toStartOf = "parent" app:layout_constraintTop_toBottomOf = "@+id/editText" /> </ androidx.constraintlayout.widget.ConstraintLayout > |
Шаг 5: Работа с файлом MainActivity2
Теперь мы создадим Backend приложения. Для этого откройте файл MainActivity и создайте экземпляр компонента (Button, TextView), созданного в файле XML, с помощью метода findViewById(). Этот метод привязывает созданный объект к компонентам пользовательского интерфейса с помощью назначенного идентификатора.
Синтаксис:
ComponentType object = (ComponentType) findViewById(R.id.IdOfTheComponent); Intent i = new Intent(getApplicationContext(), <className>); startActivity(i);
Java
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class MainActivity2 extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main2); } public void homeScreen(View view) { Intent i = new Intent(getApplicationContext(), MainActivity. class ); startActivity(i); } } |