openplanning

Ví dụ về một Android Intent tường minh, gọi một Intent khác

Xem thêm các chuyên mục:

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- Android Intent

2- Ví dụ với Intent tường minh

Xem trước ví dụ:
Đây là mô hình ví dụ:
Tạo mới một "Empty Activity" project có tên ExplicitIntentExample:
  • Name: ExplicitIntentExample
  • Package name: org.o7planning.explicitintentexample
  • main_activity.xml
Nếu bạn quan tâm tới các bước để thiết kế giao diện của ứng dụng này xin hãy xem phần phụ lục phía cuối của bài viết.
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="0dp"
        android:layout_height="27dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="26dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="Full Name:"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/editText_fullName"
        android:layout_width="0dp"
        android:layout_height="46dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="15dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:ems="10"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

    <Button
        android:id="@+id/button_sendMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="28dp"
        android:text="Send message to GreetingActivity"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText_fullName" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="34dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="34dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="Feedback from GreetingActivity:"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button_sendMessage" />

    <TextView
        android:id="@+id/textView_feedback"
        android:layout_width="0dp"
        android:layout_height="46dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="23dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="((Feedback))"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />
</androidx.constraintlayout.widget.ConstraintLayout>
Khi người dùng nhấn vào Button, chương trình sẽ gọi sang một Activity khác để hiển thị một lời chào. Bạn cần tạo một Activity khác với tên GreetingActivity.
  • File > New > Activity > Empty Activity
  • activity_greeting.xml
activity_greeting.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".GreetingActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="0dp"
        android:layout_height="29dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="27dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="Message sent from MainActivity:"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView_message"
        android:layout_width="0dp"
        android:layout_height="42dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="23dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="((Message))"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

    <Button
        android:id="@+id/button_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="63dp"
        android:text="Back"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView_message" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java

package org.o7planning.explicitintentexample;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private EditText editTextFullName;
    private TextView textFeedback;

    private Button buttonSendMessage;

    public static final int MY_REQUEST_CODE = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.editTextFullName = (EditText)this.findViewById(R.id.editText_fullName);
        this.textFeedback = (TextView)this.findViewById(R.id.textView_feedback);

        this.buttonSendMessage = (Button)this.findViewById(R.id.button_sendMessage);

        this.buttonSendMessage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendMessage();
            }
        });
    }

    // When 'Greeting Activity' completed, it sends back a feedback.
    // (If you have started it by startActivityForResult())
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == Activity.RESULT_OK && requestCode == MY_REQUEST_CODE) {
            String feedback = data.getStringExtra("feedback");
            this.textFeedback.setText(feedback);
        } else {
            this.textFeedback.setText("!?");
        }
    }

    // The method is called when the user clicks on "Send Message to GreetingActivity" button.
    public void sendMessage( )  {
        String fullName= this.editTextFullName.getText().toString();
        String message = "Hello, Please say hello me!";

        Intent intent = new Intent(this,GreetingActivity.class);
        intent.putExtra("fullName", fullName);
        intent.putExtra("message", message);

        // Start Activity and no need feedback.
        // this.startActivity(intent);

        // Start Activity and get feedback.
        this.startActivityForResult(intent, MY_REQUEST_CODE);
    }

}

 
GreetingActivity.java

package org.o7planning.explicitintentexample;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class GreetingActivity extends AppCompatActivity {

    private TextView textViewMessage;
    private Button buttonBack;

    private String fullName;
    private String message;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_greeting);

        this.textViewMessage =(TextView) this.findViewById(R.id.textView_message);
        this.buttonBack = (Button) this.findViewById(R.id.button_back);

        this.buttonBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                goBack();
            }
        });

        // Intent is passed into
        Intent intent = this.getIntent();

        this.fullName = intent.getStringExtra("fullName");
        this.message = intent.getStringExtra("message");

        this.textViewMessage.setText(this.message );
    }

    // When completed this Activity, send feedback to the caller.
    @Override
    public void finish() {
        // Prepare data intent
        Intent data = new Intent();
        String feedback = "OK, Hello " + this.fullName + ". How are you?";
        data.putExtra("feedback", feedback);

        // Activity finished ok, return the data
        this.setResult(Activity.RESULT_OK, data);
        super.finish();
    }


    // The method is called when the user clicks the "Back" button.
    public void goBack()  {
        // Calling onBackPressed() method to back to the previous Activity.
        this.onBackPressed();
    }


}
Chạy ứng dụng:

3- Phụ lục: Thiết kế main_activity.xml

Sét đặt ID, Text cho các thành phần trên giao diện:

4- Phụ lục: Thiết kế greeting_activity.xml

Sét đặt ID, Text cho các thành phần trên giao diện:

Xem thêm các chuyên mục: