Cara Membuat Intent Login dengan Data dan Validasi di Android Studio


Tujuan dari tutorial ini adalah agar kalian dapat membuat intent sederhana dengan melewatkan data antar activity.

Pertama, buat proyek baru di Android Studio dengan nama LoginIntent.
pilih Empty Activity


Kemudian, pilih minimal SDK android yang akan digunakan (misal API Level 21 Lollipop 5.0), dan biarkan nama activity dan layout secara default.

Sebelum membuat view, kita akan menambah values dalam file colors.xml dengan nama colorBlack(#000000) dan colorLightGreen(#30e785).
<color name="colorBlack">#000000</color>
<color name="colorLightGreen">#30e785</color>  
Sehingga, isi dari file colors.xml menjadi seperti berikut.
 <?xml version="1.0" encoding="utf-8"?><resources>  
   <color name="colorPrimary">#3F51B5</color>  
   <color name="colorPrimaryDark">#303F9F</color>  
   <color name="colorAccent">#FF4081</color>  
   <color name="colorBlack">#000000</color>  
   <color name="colorLightGreen">#30e785</color>  
 </resources>  
Sesuaikan kode pada layout activity_main.xml menjadi seperti di bawah ini.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:padding="15dp"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/etEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter your email"
        android:textSize="25sp"
        android:inputType="textEmailAddress"
        android:maxLines="1"
        android:layout_above="@+id/etPassword"/>

    <EditText
        android:id="@+id/etPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter your password"
        android:textSize="25sp"
        android:inputType="textPassword"
        android:maxLines="1"
        android:layout_centerVertical="true"/>

    <Button
        android:id="@+id/btnLogin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Login"
        android:textAllCaps="false"
        android:background="@color/colorLightGreen"
        android:layout_below="@id/etPassword"
        android:layout_marginTop="20dp"/>

</RelativeLayout>  
Jika dijalankan, tampilan dari xml di atas adalah seperti gambar di bawah ini.
Berikut adalah kode pada MainActivity.java.
 package azuka.com.loginintent;  
 import android.content.Intent;  
 import android.support.v7.app.AppCompatActivity;  
 import android.os.Bundle;  
 import android.view.View;  
 import android.widget.Button;  
 import android.widget.EditText;  
 public class MainActivity extends AppCompatActivity {  
   //create the variables  
   private EditText editTextEmail, editTextPassword;  
   private Button buttonLogin;  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_main);  
     //reference to the views  
     editTextEmail = findViewById(R.id.etEmail);  
     editTextPassword = findViewById(R.id.etPassword);  
     buttonLogin = findViewById(R.id.btnLogin);  
     //set the click listener (what will be done if the button is clicked) for the buttonLogin  
     buttonLogin.setOnClickListener(new View.OnClickListener() {  
       @Override  
       public void onClick(View v) {  
         //create the intent  
         Intent intent = new Intent(getApplicationContext(), HomeActivity.class);  
         startActivity(intent);  
       }  
     });  
   }  
 }  
Sekarang, mari kita jalankan aplikasinya terlebih dahulu.
Ketika kita mengklik tombol, maka seharusnya kita akan diarahkan ke HomeActivity. Dan jika berhasil, maka kita sudah berhasil mengimplementasikan intent sederhana. Namun, kita masih perlu memodifikasi sedikit fungsi di MainActivity untuk melakukan validasi input.

Pada kesempatan kali ini, kita akan membuat validasi kondisi email dan password tidak boleh kosong agar user dapat login.

Kita akan memodifikasi MainActivity. Tambah fungsi berikut ini pada metode onCreate di dalam fungsi onClick untuk mengecek apakah email atau password kosong.
  //check if email is empty  
         if (email.isEmpty()){  
           editTextEmail.setError("Please enter your email");  
           return;  
         }  
         //check if password is empty  
         if (password.isEmpty()){  
           editTextPassword.setError("Please enter your password");  
           return;  
         }  
         //call function login  
         login(email);  
     private void login(String email){
        //create the intent
        Intent intent = new Intent(getApplicationContext(), HomeActivity.class);
        intent.putExtra(EMAIL, email);
        startActivity(intent);
    }
Sekarang, kita akan memodifikasi activity_home.xml sehingga isinya seperti ini.
 <?xml version="1.0" encoding="utf-8"?>  
 <RelativeLayout 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=".HomeActivity">  
   <TextView  
     android:layout_width="match_parent"  
     android:layout_height="wrap_content"  
     android:text="You're logged in as"  
     android:layout_above="@+id/tvEmail"/>  
   <TextView  
     android:id="@+id/tvEmail"  
     android:layout_width="match_parent"  
     android:layout_height="wrap_content"  
     android:text="This will be replaced by your email"  
     android:layout_centerVertical="true"  
     android:textSize="20sp"  
     android:textColor="@color/colorBlack"/>  
 </RelativeLayout>  
Kemudian, kita akan menambah fungsi di dalam HomeActivity agar dapat mengubah teks "This will be replaced by your email" menjadi email yang sebelumnya dimasukkan. Hal ini dinamakan passing data (melewatkan data) antar activity.

Tambahkan fungsi di bawah ini :
 textViewEmail = findViewById(R.id.tvEmail);  
 String email = getIntent().getStringExtra(MainActivity.EMAIL);  
 textViewEmail.setText(email);  

Akhirnya, selesai juga aplikasi Login dengan Data dan Validasi


Berikut adalah kode lengkapnya.
  • MainActivity.java
 package azuka.com.loginintent;  
 import android.content.Intent;  
 import android.os.Bundle;  
 import android.support.v7.app.AppCompatActivity;  
 import android.view.View;  
 import android.widget.Button;  
 import android.widget.EditText;  
 public class MainActivity extends AppCompatActivity {  
   //create the variables  
   private EditText editTextEmail, editTextPassword;  
   private Button buttonLogin;  
   public static final String EMAIL = "azuka.com.loginintent.email";  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_main);  
     //reference to the views  
     editTextEmail = findViewById(R.id.etEmail);  
     editTextPassword = findViewById(R.id.etPassword);  
     buttonLogin = findViewById(R.id.btnLogin);  
     //set the click listener (what will be done if the button is clicked) for the buttonLogin  
     buttonLogin.setOnClickListener(new View.OnClickListener() {  
       @Override  
       public void onClick(View v) {  
         //save input data to variables  
         String email = editTextEmail.getText().toString();  
         String password = editTextPassword.getText().toString();  
         //check if email is empty  
         if (email.isEmpty()){  
           editTextEmail.setError("Please enter your email");  
           return;  
         }  
         //check if password is empty  
         if (password.isEmpty()){  
           editTextPassword.setError("Please enter your password");  
           return;  
         }  
         //call function login  
         login(email);  
       }  
     });  
   }  
   private void login(String email){  
     //create the intent  
     Intent intent = new Intent(getApplicationContext(), HomeActivity.class);  
     intent.putExtra(EMAIL, email);  
     startActivity(intent);  
   }  
 }  
  • HomeActivity.java
 package azuka.com.loginintent;  
 import android.support.v7.app.AppCompatActivity;  
 import android.os.Bundle;  
 import android.widget.TextView;  
 public class HomeActivity extends AppCompatActivity {  
   //create the variables  
   private TextView textViewEmail;  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_home);  
     //reference to the views  
     textViewEmail = findViewById(R.id.tvEmail);  
     String email = getIntent().getStringExtra(MainActivity.EMAIL);  
     textViewEmail.setText(email);  
   }  
 }  

Jangan sungkan untuk bertanya di kolom komentar di bawah ini jika kalian mengalami kesulitan mengimplementasikannya atau kalian merasa bingung.

Comments