Friday, May 5, 2017

Cara mudah membuat Login dengan database SQLite pada android studio

Filled under:

Pada dasarnya untuk membuat login dengan database SQLite di android itu cukup mudah.

pertama kita buat 3 Activity (empty) yang akan secara otomatis include dengan xml filenya (bisa dilihat pada layout). Yaitu :
-MainActivity.java (activity yang pertama kali akan muncul bila aplikasi login anda telah dijalankan)
-Register.java (activity yang akan membuat pendaftaran apabila anda belum bisa login)
-Tampil.java (activity yang akan muncul bila anda sudah berhasil login)

Kemudian buat 3 java class (yang berfungsi sebagai method getter dan setter dan SQLite nya yang akan kita panggil nantinya). Yaitu :
-Contact.java
-DatabaseHelper.java

Langsung saja pertama kita buat Layoutnya pada activity_main :
?xml version="1.0" encoding="utf-8"?>
<ScrollView 
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:background="@drawable/blues"    
tools:context="com.bigbuildingproject.okta.icd_10.MainActivity">


<RelativeLayout    
android:layout_width="match_parent"    
android:layout_height="wrap_content">
   
<ImageView       
android:layout_width="80dp"        
android:layout_height="50dp"       
android:background="@drawable/ic_https_black_24dp"        
android:layout_alignTop="@+id/textView4"        
android:layout_toRightOf="@+id/TFpassword"        
android:layout_toEndOf="@+id/TFpassword" />
    
<TextView        
android:id="@+id/textView3"        
android:layout_width="wrap_content"        
android:layout_height="wrap_content"        
android:layout_marginLeft="59dp"       
android:layout_marginStart="59dp"        
android:layout_marginTop="52dp"        
android:text="Username"        
android:layout_alignParentTop="true"        
android:layout_alignParentLeft="true"       
android:layout_alignParentStart="true" />
    
<EditText      
android:id="@+id/TFusername"        
android:layout_width="wrap_content"        
android:layout_height="wrap_content"        
android:ems="10"        
android:inputType="textPersonName"        
android:layout_below="@+id/textView3"        
android:layout_alignLeft="@+id/textView3"        
android:layout_alignStart="@+id/textView3" />

    
<TextView         
android:id="@+id/textView4"        
android:layout_width="wrap_content"        
android:layout_height="wrap_content"        
android:layout_alignLeft="@+id/TFusername"        
android:layout_alignStart="@+id/TFusername"       
android:layout_below="@+id/TFusername"        
android:layout_marginTop="30dp"        
android:text="Password" />

    
<EditText //untuk mengisi password        
android:id="@+id/TFpassword"        
android:layout_width="wrap_content"        
android:layout_height="wrap_content"        
android:layout_alignLeft="@+id/textView4"       
android:layout_alignStart="@+id/textView4"        
android:layout_below="@+id/textView4"        
android:ems="10"        
android:inputType="textPassword" />

<Button   
android:id="@+id/Blogin"
style="@style/Widget.AppCompat.Button.Colored"        
android:layout_width="wrap_content"        
android:layout_height="wrap_content"        
android:layout_alignLeft="@+id/TFpassword"       
android:layout_alignStart="@+id/TFpassword"        
android:layout_below="@+id/TFpassword"        
android:layout_marginTop="52dp"        
android:onClick="onButtonClick"       
android:text="Login" />

   
<Button       
android:id="@+id/bregister"        
style="@style/Widget.AppCompat.Button.Colored"       
android:layout_width="wrap_content"       
android:layout_height="wrap_content"        
android:layout_alignEnd="@+id/TFpassword"       
android:layout_alignParentBottom="true"       
android:layout_alignRight="@+id/TFpassword"        
android:onClick="onButtonClick"       
android:text="Register" />
</RelativeLayout>
</ScrollView>







kemudian kita masuk ke MainActivity.java :

package com.bigbuildingproject.okta.icd_10;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.text.Normalizer;

public class MainActivity extends AppCompatActivity {
DatabaseHelper helper = new DatabaseHelper(this); 
@Override   
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setTitle("Login here");
}
public void onButtonClick (View v)
{
if (v.getId()==R.id.Blogin) 
{
EditText a = (EditText)findViewById(R.id.TFusername);
EditText b = (EditText)findViewById(R.id.TFpassword);
String str = a.getText().toString();
String pass = b.getText().toString();
String password = helper.searchPass(str);
if (a.length()==0 && b.length()==0)
{
a.setError("Mohon di isi");
b.setError("Mohon di isi");
}
else if (a.length()==0)
{
a.setError("Mohon di isi");
}
else if (b.length()==0)
{
b.setError("Mohon di isi");
}
else if (pass.equals(password))
{
Intent i = new Intent(MainActivity.this, Tampil.class);
startActivity(i);
}
else{
Toast.makeText(MainActivity.this, 
"Password dont match", Toast.LENGTH_SHORT).show();
}
}
if (v.getId()==R.id.bregister) 
{
Intent i = new Intent(MainActivity.this, Register.class);
startActivity(i);
}
}
}


Kemudian kita ke register.xml :
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 
xmlns:android="http://schemas.android.com/apk/res/android"    
android:layout_width="match_parent"    
android:layout_height="match_parent"    
android:background="@drawable/blues">
<RelativeLayout        
android:layout_width="wrap_content"       
android:layout_height="wrap_content">
        
<TextView            
android:id="@+id/textView6"            
android:layout_width="wrap_content"           
android:layout_height="wrap_content"           
android:layout_alignParentLeft="true"            
android:layout_alignParentStart="true"           
android:layout_alignParentTop="true"            
android:layout_marginLeft="12dp"          
android:layout_marginStart="12dp"           
android:layout_marginTop="22dp"            
android:text="Nama" />

       
<EditText            
android:id="@+id/TFname"           
android:layout_width="wrap_content"           
android:layout_height="wrap_content"           
android:layout_alignLeft="@+id/textView6"          
android:layout_alignStart="@+id/textView6"           
android:layout_below="@+id/textView6"         
android:ems="10"            
android:inputType="textPersonName" />
        
<TextView            
android:id="@+id/textView7"            
android:layout_width="wrap_content"            
android:layout_height="wrap_content"            
android:layout_alignLeft="@+id/TFname"            
android:layout_alignStart="@+id/TFname"            
android:layout_below="@+id/TFname"            
android:layout_marginTop="23dp"            
android:text="Email" />

        
<EditText            
android:id="@+id/TFemail"            
android:layout_width="wrap_content"            
android:layout_height="wrap_content"            
android:layout_alignLeft="@+id/textView7"            
android:layout_alignStart="@+id/textView7"            
android:layout_below="@+id/textView7"            
android:ems="10"            
android:inputType="textPersonName" />
       
 
<TextView            
android:id="@+id/textView8"            
android:layout_width="wrap_content"            
android:layout_height="wrap_content"            
android:layout_alignLeft="@+id/TFemail"            
android:layout_alignStart="@+id/TFemail"            
android:layout_below="@+id/TFemail"            
android:layout_marginTop="26dp"            
android:text="Username" />

        
<EditText            
android:id="@+id/TFuname"            
android:layout_width="wrap_content"            
android:layout_height="wrap_content"            
android:layout_alignLeft="@+id/textView8"            
android:layout_alignStart="@+id/textView8"            
android:layout_below="@+id/textView8"            
android:ems="10"            
android:inputType="textPersonName" />

        
<TextView            
android:id="@+id/textView9"            
android:layout_width="wrap_content"            
android:layout_height="wrap_content"            
android:layout_alignLeft="@+id/TFuname"            
android:layout_alignStart="@+id/TFuname"            
android:layout_below="@+id/TFuname"            
android:layout_marginTop="25dp"           
android:text="Password 1st" />

        
<EditText            
android:id="@+id/TFpass1"            
android:layout_width="wrap_content"            
android:layout_height="wrap_content"            
android:layout_alignLeft="@+id/textView9"            
android:layout_alignStart="@+id/textView9"            
android:layout_below="@+id/textView9"            
android:ems="10"            
android:inputType="textPassword" />

       
<TextView            
android:id="@+id/textView10"            
android:layout_width="wrap_content"            
android:layout_height="wrap_content"            
android:layout_alignLeft="@+id/TFpass2"            
android:layout_alignStart="@+id/TFpass2"            
android:layout_below="@+id/TFpass1"            
android:layout_marginTop="23dp"            
android:text="Password 2nd" />
        
<EditText            
android:id="@+id/TFpass2"            
android:layout_width="wrap_content"            
android:layout_height="wrap_content"            
android:ems="10"            
android:inputType="textPassword"            
android:layout_below="@+id/textView10"            
android:layout_alignLeft="@+id/TFpass1"           
android:layout_alignStart="@+id/TFpass1" />

        
<Button            
android:id="@+id/Bregister"            
style="@style/Widget.AppCompat.Button.Colored"            
android:layout_width="wrap_content"            
android:layout_height="wrap_content"            
android:layout_alignEnd="@+id/textView10"            
android:layout_alignRight="@+id/textView10"           
android:layout_below="@+id/TFpass2"            
android:layout_marginTop="63dp"            
android:onClick="onRegisterClick"            
android:text="Register" />

    
</RelativeLayout>
</ScrollView>

Setelah itu ke Register.java :
package com.bigbuildingproject.okta.icd_10;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

/** * Created by Asus on 30/04/2017. */
public class Register extends Activity {
DatabaseHelper helper = new DatabaseHelper(this);
@Override    
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
}
public void onRegisterClick (View v)
{
if (v.getId()==R.id.Bregister)
{
EditText name = (EditText)findViewById(R.id.TFname);
EditText email = (EditText)findViewById(R.id.TFemail);
EditText uname = (EditText)findViewById(R.id.TFuname);
EditText pass1 = (EditText)findViewById(R.id.TFpass1);
EditText pass2 = (EditText)findViewById(R.id.TFpass2);

String namestr = name.getText().toString();
String emailstr = email.getText().toString();
String unamestr = uname.getText().toString();
String pass1str = pass1.getText().toString();
String pass2str = pass2.getText().toString();

if (namestr.length()==0)
{
name.setError("Nama kosong, mohon di isi");
}

else if (emailstr.length()==0)
{
email.setError("Email kosong, mohon di isi");
}

else if (unamestr.length()==0)
{
uname.setError("username kosong, mohon di isi");
}
else if (!pass1str.equals(pass2str))
{
Toast.makeText(Register.this, "Password Unmatch", 
Toast.LENGTH_SHORT).show();
}

else{
Contact c = new Contact();
c.setName(namestr);
c.setEmail(emailstr);
c.setUname(unamestr);
c.setPass(pass1str);
helper.insertContact(c);
finish();
Toast.makeText(Register.this, 
"Username & password berhasil dibuat", 
Toast.LENGTH_SHORT).show();
}
}
}
}
Masuk ke Tampil.java :
package com.bigbuildingproject.okta.icd_10;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class Tampil extends AppCompatActivity {

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



Setelah semua selesai, kita buat method getter dan setter pada 
Contact.java, untuk mengambil value nantinya :
package com.bigbuildingproject.okta.icd_10;

/** * Created by Asus on 30/04/2017. */
public class Contact {
String name, email, uname, pass;

public void setName (String name)
{
this.name=name;
}

public String getName()
{
return this.name;
}

public void setEmail (String email)
{
this.email=email;
}

public String getEmail()
{
return this.email;
}

public void setUname (String uname)
{
this.uname=uname;
}

public String getUname()
{
return this.uname;
}

public void setPass (String pass)
{
this.pass=pass;
}

public String getPass()
{
return this.pass;
}
}


Setelah semua selesai, masuk Ke DatabaseHelper.java :
package com.bigbuildingproject.okta.icd_10;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/** * Created by Asus on 30/04/2017. */
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "contacts";
private static final String TABLE_NAME = "contacts";
private static final String COLUMN_ID = "id";
private static final String COLUMN_NAME = "name";
private static final String COLUMN_EMAIL = "email";
private static final String COLUMN_UNAME = "uname";
private static final String COLUMN_PASS = "pass";
SQLiteDatabase db;

private static final String TABLE_CREATE = "create table contacts 
(id integer primary key not null, " +
"name text not null, email text not null, uname text not null, 
pass text not null);";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}


@Override    
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);
this.db = db;
}

public void insertContact(Contact c) {
db = this.getWritableDatabase();
String query = "select * from contacts ";
Cursor cursor = db.rawQuery(query, null);
int count = cursor.getCount();
ContentValues values = new ContentValues();
values.put(COLUMN_ID, count);
values.put(COLUMN_NAME, c.getName());
values.put(COLUMN_EMAIL, c.getEmail());
values.put(COLUMN_UNAME, c.getUname());
values.put(COLUMN_PASS, c.getPass());
db.insert(TABLE_NAME, null, values);
db.close();
}

public String searchPass(String uname) {
db = this.getReadableDatabase();
String query = "select uname, pass from " + TABLE_NAME;
Cursor cursor = db.rawQuery(query, null);
String a, b;
b = "not found";
if (cursor.moveToFirst()) {
do {
a = cursor.getString(0);
if (a.equals(uname)) {
b = cursor.getString(1);
break;
}
}
while (cursor.moveToNext());
}
return b;
}

@Override    
public void onUpgrade(SQLiteDatabase db, int oldVersion, 
int newVersion) {
String query = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(query);
this.onCreate(db);
}
}


-Kita lihat outputnya :
























-Pada form register :



-Pada form Tampil :


Kesimpulan :
Bahwa untuk membangun aplikasi login pada android. Anda harus fokus terhadap :
1. Bagian MainActivity.java
2. Bagian Register.java
3. Bagian DatabaseHelper.java
4. Bagian Contact.java
   
Urutan diatas adalah agar anda semua tidak bingung ketika memahami 
penggalan kodingan diatas. Jadi kita mendesain terlebih dahulu tampilan 
UI awal untuk loginnya yang terdapat pada mainactivity.xml,kemudian bila 
sudah, ketikkan kode yang terdapat di MainActivity.java.Setelah itu lanjut 
ke bagian untuk membuat tampilan register.xml bila belum memiliki id dan 
password. Disana kita buat user agar menginput data-data mereka (seperti 
nama, email, alamat, id, password, dan  password 2nd) agar bisa login 
nantinya. Kemudian ketikkan kode yang  terdapat pada Register.java. Setelah 
kedua activity tersebut telah di desain, selanjutnya kita buat activity 
DatabaseHelper.java(tanpa xmlnya), dikarenakan kita hanya ingin membuat 
data-data yangtelah  user  input pada Activity register bisa ditampung / 
disimpan  didatabase nantinya Terakhir, kita masuk kebagian Activity Contact 
untuk membantu activity DatabaseHelper dalam menampung database yang telah user   
inputkan nantinya, dan bila berhasil akan masuk kedalam Tampil.java nantinya.

Sekian Artikel kali ini, semoga bermanfaat. Salam Developer ^^





24 Comments:

  1. boleh saya tanya ini kenapa hasil running password yng di isi sudah benar tapi masih tetap slah ya,.

    ReplyDelete
  2. gan mau nanya, ini apknya udah jalan cuman pas klik register malah "unfortunately, My application has stopped working" kira-kira kenapa ya itu?

    ReplyDelete
  3. Bisa lihat logcatnya mas pas saat di run?, seharusnya datanya sudah masuk (bisa dilihat dgn menggunakan sql debugger, download dari playstore)

    ReplyDelete
    Replies
    1. kalo masih gabisa juga, yang di DatabaseHelper.java copy all aja semua

      Delete
  4. mau nanya mas
    tahu caranya database tersimpan sesudah click button?
    misalnya saya punya tombol download lalu setelah di klik muncul di database bawah file sudah di download oleh yg login, tgl dan waktu sekian.
    terimakasih

    ReplyDelete
    Replies
    1. klo lokal pke db browser. bisa di cek disini http://sqlitebrowser.org/
      Kalau mau liat yang sudah download atau belum, masnya bisa menggunakan query insert di dalam button tersebut. Kalau untuk rancangannya dalam pandangan saya, mas bisa buat table download, yang dimana terdapat field download_id,user_id,dan status . Untuk user_id, nanti berdasarkan id user di table user, kemudian status bisa di isi recordnya dengan downloaded. Mungkin jawaban saya bisa membantu :)

      Delete
  5. maaf mau tanya kok setiap di klik register selalu forced closed ya

    ReplyDelete
  6. Ini mas logcat error saat menekan tombol register

    10-07 22:30:20.840 25805-25805/com.example.asus.loginpage E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.asus.loginpage, PID: 25805
    java.lang.IllegalStateException: Could not execute method for android:onClick
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
    at android.view.View.performClick(View.java:6897)
    at android.widget.TextView.performClick(TextView.java:12693)
    at android.view.View$PerformClick.run(View.java:26101)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
    Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
    at android.view.View.performClick(View.java:6897) 
    at android.widget.TextView.performClick(TextView.java:12693) 
    at android.view.View$PerformClick.run(View.java:26101) 
    at android.os.Handler.handleCallback(Handler.java:789) 
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6944) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
    at com.example.asus.loginpage.RegisterActivity.onRegisterClick(RegisterActivity.java:31)
    at java.lang.reflect.Method.invoke(Native Method) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) 
    at android.view.View.performClick(View.java:6897) 
    at android.widget.TextView.performClick(TextView.java:12693) 
    at android.view.View$PerformClick.run(View.java:26101) 
    at android.os.Handler.handleCallback(Handler.java:789) 
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6944) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 

    ReplyDelete
    Replies
    1. Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference

      Itu diatas msh ke detect null mas dari EditTextnya, dan juga ga ada penanganan error , sebab itu langsung force close. Solusinya cek lagi apakah variabel String tersebut telah benar mengarah ke dalam Edittext yang dituju, sehingga field dapat terisi dengan record yang sesuai dari isian data pada Edittext, atau solusi kedua, mas buat field 1 dulu, kemudian dicoba untuk insert, kalau sudah bisa, baru ditambah sesuai keinginan mas

      Delete
  7. gan untuk melihat data hasil registrasinya gmn gan?

    ReplyDelete
  8. kak mau tanya saya dibagian DatabaseHelper nya error gimana ya?

    ReplyDelete
  9. #OOT
    Gan caranya buat logout gimana ya?

    ReplyDelete
    Replies
    1. menggunakan session di sharedpreferences, nanti waktu klik button, sharedpreferences akan menyimpan data dari inputan di username maupun password, jd ketikan session login true, maka otomatis akan langsung ke redirect pada menu home. Sebaliknya, kalau belum ada data tersimpan pada sharedpreferences, maka harus login terlebih dahulu. Nanti saya buatkan tutorialnya

      Delete
  10. gan mau nanya cepat dong wkwkwk saya punya kasus sama saat di click register "app, not responding/auto close" berikut logcat saya
    --------- beginning of crash
    2019-05-27 19:34:37.182 6264-6264/umn.ac.id.logindatabaseindo E/AndroidRuntime: FATAL EXCEPTION: main
    Process: umn.ac.id.logindatabaseindo, PID: 6264
    java.lang.IllegalStateException: Could not execute method for android:onClick
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
    at android.view.View.performClick(View.java:5637)
    at android.view.View$PerformClick.run(View.java:22429)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6119)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
    Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
    at android.view.View.performClick(View.java:5637) 
    at android.view.View$PerformClick.run(View.java:22429) 
    at android.os.Handler.handleCallback(Handler.java:751) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6119) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
    Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {umn.ac.id.logindatabaseindo/umn.ac.id.logindatabaseindo.Register}; have you declared this activity in your AndroidManifest.xml?
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1805)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1523)
    at android.app.Activity.startActivityForResult(Activity.java:4225)
    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
    at android.app.Activity.startActivityForResult(Activity.java:4183)
    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
    at android.app.Activity.startActivity(Activity.java:4522)
    at android.app.Activity.startActivity(Activity.java:4490)
    at umn.ac.id.logindatabaseindo.MainActivity.onButtonClick(MainActivity.java:57)
    at java.lang.reflect.Method.invoke(Native Method) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) 
    at android.view.View.performClick(View.java:5637) 
    at android.view.View$PerformClick.run(View.java:22429) 
    at android.os.Handler.handleCallback(Handler.java:751) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6119) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

    ReplyDelete
    Replies
    1. antara id sama inisialisasi variabel di java activitynya sudah sama mas? sepertinya itu belum terinisialisasi ke xmlnya, pastikan dlu, trs kalau sudah tinggal misal contoh : btnLogin.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
      //do something
      }
      });

      Delete
    2. atau bisa taruh kodingan xml dan java ke email saya di pojok kanan bawah

      Delete
  11. Halo kak, terimakasih artikelnya... ini sangat membantu saya dalam menyelesaikan tugas kuliah saya. oh ya kak, perkenalkan nama saya Nurhamimah dan jangan lupa kunjungi website kampus saya ISB Atma Luhur

    ReplyDelete
  12. This comment has been removed by the author.

    ReplyDelete
  13. Halo kak, terimakasih artikelnya... ini sangat membantu saya dalam menyelesaikan tugas kuliah saya. oh ya kak, perkenalkan nama saya Nurhamimah dan jangan lupa kunjungi website kampus saya ISB Atma Luhur

    ReplyDelete