Developer от Бога

DV

четверг, 6 июля 2017 г.

Android. Intent

Intent - представляет собой объект обмена сообщениями между компонентами - одного или разных приложений. Если взять аналогию с WEB страницами, Intent по функциональности напоминают ссылки, с помощью которых можно переходить как по страницам одного сайта, так и по другим. Как и с помощью ссылок, при переходе на другие страницы (в данном случае переходы на другие активности Android, или окна) есть возможность передавать параметры (строки, числа) другим активностям своего приложения, или другим внешним приложениям (если внешние приложения это разрешают). Путь между активностями, Intent проходит через ActivityManager Операционной Системы Android, а не на прямую.
Intent способен запускать процессы в Service - приложения которые не имеют графического представления, и работают в фоновом режиме. Также Intent используют для рассылки широковещательных сообщений, которые могут принимать любые приложения. Многие процессы в Android, ОС транслирует через широковещательные сообщения, которые можно читать если есть в этом необходимость.
В этом коде показывается пример использования Intent для перехода между активностями (окнами) одного приложения.

  1. <activity
  2. android:name=".IntentActivity"
  3. android:label="@string/app_name" />  
  4. Где IntentActivity - это java класс, новой активности.
  5. Главная активность:
  6.  
  7.  
  8. <?xml version="1.0" encoding="utf-8"?>
  9. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  10. xmlns:tools="http://schemas.android.com/tools"
  11. android:layout_width="match_parent"
  12. android:layout_height="match_parent"
  13. android:paddingBottom="@dimen/activity_vertical_margin"
  14. android:paddingLeft="@dimen/activity_horizontal_margin"
  15. android:paddingRight="@dimen/activity_horizontal_margin"
  16. android:paddingTop="@dimen/activity_vertical_margin"
  17. tools:context="com.ivarious.myapplication.MainActivity">
  18. <TextView
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:text="Firsht Activity"
  22. android:id="@+id/textView2" />
  23. <Button
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:text="Next Activity"
  27. android:id="@+id/next"
  28. android:layout_below="@+id/textView2"
  29. android:layout_toEndOf="@+id/textView2"
  30. android:layout_marginTop="132dp" />
  31. <EditText
  32. android:layout_width="wrap_content"
  33. android:layout_height="wrap_content"
  34. android:id="@+id/editText"
  35. android:layout_below="@+id/textView2"
  36. android:layout_alignParentStart="true"
  37. android:layout_marginTop="29dp"
  38. android:layout_alignEnd="@+id/next" />
  39. </RelativeLayout>


Дополнительная активность (следующее окно приложения при переходе):


  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent">
  6. <TextView
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:text="Second Activity"
  10. android:id="@+id/textView" />
  11. <Button
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:text="Cencel"
  15. android:id="@+id/cencel"
  16. android:layout_gravity="center_horizontal" />
  17. </LinearLayout> layout_gravity="center_horizontal" />


Класс главной активности activity_main.java:


  1. package com.ivarious.myapplication;
  2. import android.content.Intent;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import android.widget.EditText;
  8. public class MainActivity extends AppCompatActivity {
  9. private Button next;
  10. private EditText editText;
  11. private String str;
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.activity_main);
  16. next = (Button)findViewById(R.id.next);
  17. editText = (EditText)findViewById(R.id.editText);
  18. next.setOnClickListener(new View.OnClickListener(){
  19. @Override
  20. public void onClick(View v) {
  21. str = editText.getText().toString();
  22. Intent intent = new Intent(MainActivity.this, IntentActivity.class);
  23. intent.putExtra("name",str);
  24. startActivity(i);
  25. }});
  26. } }  


И класс дополнительной активности IntentActivity.java, на которую произведен переход:


  1. package com.ivarious.myapplication;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.widget.TextView;
  9. public class IntentActivity extends Activity {
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.intentactivity);
  14. Button cencel = (Button)findViewById(R.id.cencel);
  15. Intent intent = getIntent();
  16. String str = intent.getStringExtra("name");
  17. TextView txt = (TextView)findViewById(R.id.textView);
  18. txt.setText(str);
  19. cencel.setOnClickListener(new View.OnClickListener(){
  20. @Override
  21. public void onClick(View v) {
  22. finish();
  23. }});
  24. } }  

Комментариев нет:

Отправить комментарий