Android-Login Validation

Ich habe alles versucht und so frustriert, in dieser Phase mit meinem android einloggen, kann mir jemand helfen, BITTE! Ich habe ein login-Bildschirm, die fordert Benutzer zur Eingabe der E-Mail und Passwort,wenn Sie klicken Sie auf login, es muss gehen und überprüfen Sie meine sqlite db, wenn die richtige Sie haben erfolgreichen Anmeldung, falls nicht, korrigieren Sie werden aufgefordert, es erneut zu versuchen! Ich habe meinen code unten

Login-Aktivität

   package com.example.finalproject;



import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class LoginActivity extends Activity{

    EditText EmailAdd;
    EditText Password;
    Button Login;
    Button NewUser;
    private SQLiteAdapter db;


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_activity);
        //addListenerOnButton();

        //Button mNewUser = (Button)findViewById(R.id.btnLogMain);
        //mNewUser.setOnClickListener(this);

        EmailAdd = (EditText)findViewById(R.id.password);
        Password = (EditText)findViewById(R.id.password);

        Login = (Button)findViewById(R.id.btnLogMain);
        Login.setOnClickListener(buttonLoginOnClickListener);
        NewUser = (Button)findViewById(R.id.btnNewUser);
        NewUser.setOnClickListener(buttonNewUserOnClickListener);

    }



    Button.OnClickListener buttonLoginOnClickListener
       = new Button.OnClickListener(){

        @Override
          public void onClick(View arg0) {
            //SQLiteAdapter db = new SQLiteAdapter (LoginActivity.this );
            SQLiteDatabase db = new SQLiteAdapter(LoginActivity.this).openToWrite();
            String email = EmailAdd.getText().toString();
             String password = Password.getText().toString();

            Cursor c = db.rawQuery("SELECT email FROM MY_USERS_TABLE WHERE email= ? AND password=?", new String[] {email, password});
            if(c.moveToFirst()) {
                Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
                Intent main = new Intent(LoginActivity.this, MainMenuActivity.class);
                startActivity(main);
            } else {
                Toast.makeText(getApplicationContext(), "Failed..\nTry Again", Toast.LENGTH_SHORT).show();
            }
            Intent register = new Intent(LoginActivity.this, RegisterActivity.class);
            startActivity(register);
    }
    };
    /*@Override
    public void onClick(View arg0) {
        Toast.makeText(getApplicationContext(), "Working to here!", Toast.LENGTH_SHORT).show();
         String data1 = EmailAdd.getText().toString();
         String data2 = Password.getText().toString();

        boolean invalid = false;
        //uname == null || uname.length() == 0
        if(data1.equals("")){
            invalid = true;
            Toast.makeText(getApplicationContext(), "Email ID Missing", Toast.LENGTH_SHORT).show();
        }else if(data2.equals("")){
            invalid = true;
            Toast.makeText(getApplicationContext(), "Email ID Missing", Toast.LENGTH_SHORT).show();
        }

        if(invalid == false){
            //need to check here for valid email and password

            Intent i_register = new Intent(LoginActivity.this, MainMenuActivity.class);
            startActivity(i_register);
            EmailAdd.setText("");
            Password.setText("");
            finish();
        }
        /*switch(v.getId()){

        case R.id.btnLogMain:
            mEmailAdd = (EditText)findViewById(R.id.email);
            mPassword = (EditText)findViewById(R.id.password);

            String uname = mEmailAdd.getText().toString();
            String pass = mPassword.getText().toString();

            if(uname.equals("") || uname == null){
                Toast.makeText(getApplicationContext(), "email Empty", Toast.LENGTH_SHORT).show();
            }else if(pass.equals("") || pass == null){
                Toast.makeText(getApplicationContext(), "Password Empty", Toast.LENGTH_SHORT).show();
            }else{
                boolean validLogin = validateLogin(uname, pass, LoginActivity.this);
                if(validLogin){
                    System.out.println("In Valid");
                    Intent i = new Intent(LoginActivity.this, MainMenuActivity.class);
                    startActivity(i);
                    finish();
                }
            }
            break;


        }*/
   //}
    //};

*RegisterActivity class*
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
//import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class RegisterActivity extends Activity {

 EditText inputName, inputEmail, inputPassword;
 Button buttonRegister, buttonDeleteAll;
 TextView login;
 private SQLiteAdapter mySQLiteAdapter;
 ListView listContent;

 SimpleCursorAdapter cursorAdapter;
 Cursor cursor;


   /** Called when the activity is first created. */

@Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.register_activity);


       inputName = (EditText)findViewById(R.id.name);
       inputEmail = (EditText)findViewById(R.id.email);
       inputPassword = (EditText)findViewById(R.id.password);
       buttonRegister = (Button)findViewById(R.id.register);
       //buttonDeleteAll = (Button)findViewById(R.id.showAll);

       listContent = (ListView)findViewById(R.id.contentlist);

       mySQLiteAdapter = new SQLiteAdapter(this);
       mySQLiteAdapter.openToWrite();

       cursor = mySQLiteAdapter.queueAll();
      //String[] from = new String[]{SQLiteAdapter.KEY_ID, SQLiteAdapter.KEY_NAME, SQLiteAdapter.KEY_EMAIL,SQLiteAdapter.KEY_PASSWORD};
       /*int[] to = new int[]{R.id.id, R.id.text1, R.id.text2,R.id.text3};
       cursorAdapter =
        new SimpleCursorAdapter(this, R.layout.row, cursor, from, to);
       listContent.setAdapter(cursorAdapter);*/

       buttonRegister.setOnClickListener(buttonAddOnClickListener);
       //buttonShowAll.setOnClickListener(buttonShowAllOnClickListener);
       //addListenerOnRegButton();

       TextView loginScreen = (TextView) findViewById(R.id.login);

       //Listening to login 
       loginScreen.setOnClickListener(TextLoginOnClickListener);
}

TextView.OnClickListener TextLoginOnClickListener
= new TextView.OnClickListener(){



@Override
public void onClick(View arg0) {
    Intent i = new Intent(getApplicationContext(), LoginActivity.class);
    startActivity(i);

}
};

   Button.OnClickListener buttonAddOnClickListener
   = new Button.OnClickListener(){



  @Override
  public void onClick(View arg0) {



   String data1 = inputName.getText().toString();
   String data2 = inputEmail.getText().toString();
   String data3 = inputPassword.getText().toString();

   boolean invalid = false;

    if(data1.equals("")){
        invalid = true;
        Toast.makeText(getApplicationContext(), "Name Missing", Toast.LENGTH_SHORT).show();
    }else if(data2.equals("")){
        invalid = true;
        Toast.makeText(getApplicationContext(), "Email ID Missing", Toast.LENGTH_SHORT).show();
    }else if(data3.equals("")){
        invalid = true;
        Toast.makeText(getApplicationContext(), "Password Missing", Toast.LENGTH_SHORT).show();
    }

    if(invalid == false){
        mySQLiteAdapter.insert(data1, data2, data3);
        updateList();
           Toast.makeText(RegisterActivity.this, "You are now registered",
                   Toast.LENGTH_SHORT).show();

        Intent i_register = new Intent(RegisterActivity.this, LoginActivity.class);
        startActivity(i_register);

        inputName.setText("");
        inputEmail.setText("");
        inputPassword.setText("");
        finish();
    }   




  }

   };




  /*Button.OnClickListener buttonShowAllOnClickListener1
   = new Button.OnClickListener(){

  @Override
  public void onClick(View arg0) {
      Intent i = new Intent(RegisterActivity.this, MainMenuActivity.class);
        startActivity(i);
        finish();
  }

   };

 @Override
 protected void onDestroy() {
  //TODO Auto-generated method stub
  super.onDestroy();
  mySQLiteAdapter.close();
 }*/



 private void updateList(){
  //cursor.requery();
   }

}
    /* public boolean validateLogin(String uemail, String pass, Context context) {

        mydb = new SQLiteAdapter(this);
        SQLiteDatabase db = mydb.openToWrite();
        //SELECT
        String[] columns = {"_id"};

        //WHERE clause
        String selection = "email=? AND password=?";

        //WHERE clause arguments
        String[] selectionArgs = {uemail,pass};

        Cursor cursor = null;
        try{
        //SELECT _id FROM login WHERE email=uemail AND password=pass
        cursor = db.query(SQLiteAdapter.MYDATABASE_TABLE, columns, selection, selectionArgs, null, null, null,null);

        // startManagingCursor(cursor);

        }catch(Exception e){
            e.printStackTrace();
        }
        int numberOfRows = cursor.getCount();

        if(numberOfRows <= 0){

            Toast.makeText(getApplicationContext(), "Failed..\nTry Again", Toast.LENGTH_SHORT).show();
            return false;
        }


        return true;
    }*/



    Button.OnClickListener buttonNewUserOnClickListener
       = new Button.OnClickListener(){
        @Override
          public void onClick(View arg0) {

    }
    };



    }

**SQLiteAdapter **

package com.example.finalproject;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class SQLiteAdapter {

 public static final String MYDATABASE_NAME = "MY_PROJECT_DATABASE";
 public static final String MYDATABASE_TABLE = "MY_USERS_TABLE";
 public static final int MYDATABASE_VERSION = 1;
 public static final String KEY_ID = "_id";
 public static final String KEY_NAME = "name";
 public static final String KEY_EMAIL = "email";
 public static final String KEY_PASSWORD = "password";

 //create table MY_DATABASE (ID integer primary key, Content text not null);
 private static final String SCRIPT_CREATE_DATABASE =
  "create table " + MYDATABASE_TABLE + " ("
  + KEY_ID + " integer primary key autoincrement, "
  + KEY_NAME + " text not null, "
  + KEY_EMAIL + " text not null, "
  + KEY_PASSWORD + " text not null);";

 private SQLiteHelper sqLiteHelper;
 private SQLiteDatabase sqLiteDatabase;

 private Context context;

 public SQLiteAdapter(Context c){
  context = c;
 }

 public SQLiteAdapter openToRead() throws android.database.SQLException {
  sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
  sqLiteDatabase = sqLiteHelper.getReadableDatabase();
  return this; 
 }

 public SQLiteDatabase openToWrite() throws android.database.SQLException {
        sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null,
                MYDATABASE_VERSION);
        sqLiteDatabase = sqLiteHelper.getWritableDatabase();
        return sqLiteDatabase;
    }
 /*public SQLiteAdapter openToWrite() throws android.database.SQLException {
  sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
  sqLiteDatabase = sqLiteHelper.getWritableDatabase();
  return this; 
 }*/

 public void close(){
  sqLiteHelper.close();
 }

 public long insert(String name, String email, String password){

  ContentValues contentValues = new ContentValues();
  contentValues.put(KEY_NAME, name);
  contentValues.put(KEY_EMAIL, email);
  contentValues.put(KEY_PASSWORD, password);
  return sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues);
 }

 public int deleteAll(){
  return sqLiteDatabase.delete(MYDATABASE_TABLE, null, null);
 }

 public Cursor queueAll(){
  String[] columns = new String[]{KEY_ID, KEY_NAME, KEY_EMAIL,KEY_PASSWORD};
  Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns,
    null, null, null, null, null);

  return cursor;
 }

 public class SQLiteHelper extends SQLiteOpenHelper {

  public SQLiteHelper(Context context, String name,
    CursorFactory factory, int version) {
   super(context, name, factory, version);
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
   //TODO Auto-generated method stub
   db.execSQL(SCRIPT_CREATE_DATABASE);
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   //TODO Auto-generated method stub
  }
 } 
}

Ich habe versucht, viele Dinge, aber wenn ich drücken login-button erscheint eine Meldung "Leider aufgehört zu arbeiten" thank u im Voraus für jede Hilfe, es wird sehr geschätzt werden

LogCat

The application may be doing too much work on its main thread.
    02-04 00:49:58.305: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:58.305: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:58.415: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:58.415: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:58.874: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:58.884: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:58.894: I/Choreographer(7726): Skipped 73 frames!  The application may be doing too much work on its main thread.
    02-04 00:49:58.894: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:58.894: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:58.945: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:58.975: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:58.975: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:59.024: W/Trace(7726): Unexpected value from nativeGetEnabledTags: 0
    02-04 00:49:59.104: D/AndroidRuntime(7726): Shutting down VM
    02-04 00:49:59.104: W/dalvikvm(7726): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
    02-04 00:49:59.154: E/AndroidRuntime(7726): FATAL EXCEPTION: main
    02-04 00:49:59.154: E/AndroidRuntime(7726): java.lang.NullPointerException
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at com.example.finalproject.LoginActivity$2.onClick(LoginActivity.java:165)
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at android.view.View.performClick(View.java:4202)
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at android.view.View$PerformClick.run(View.java:17340)
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at android.os.Handler.handleCallback(Handler.java:725)
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at android.os.Handler.dispatchMessage(Handler.java:92)
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at android.os.Looper.loop(Looper.java:137)
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at android.app.ActivityThread.main(ActivityThread.java:5039)
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at java.lang.reflect.Method.invokeNative(Native Method)
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at java.lang.reflect.Method.invoke(Method.java:511)
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    02-04 00:49:59.154: E/AndroidRuntime(7726):     at dalvik.system.NativeStart.main(Native Method)
    02-04 00:50:07.004: I/Process(7726): Sending signal. PID: 7726 SIG: 9

Dieser code immer noch nicht funktioniert, Bitte mir jemand helfen!

  • ändern SQLiteDatabase db = null; zu SQLiteAdapter db = new SQLiteAdapter () und prüfen Sie, ob es funktioniert
  • vielen Dank für ur help, aber das funktioniert nicht, es hat einen Fehler unter den folgenden neuen code SQLiteAdapter(this);
  • anstelle von "dies" versuchen Sie es mit classname.diese (classname der name der Klasse)
  • Nicht gut entweder, noch einen Fehler habe ich auch versucht SQLiteDatabase db = new SQLiteAdapter (LoginActivity.diese).openToRead();
  • was SQLiteAdapter db = new SQLiteAdapter (classname.diese ) ??
  • wenn ich versuche SQLiteAdapter db = new SQLiteAdapter (classname.diese ) bekomme ich eine Fehlermeldung in der folgenden code-Zeile: Cursor c = db.rawQuery("SELECT email FROM MY_USERS_TABLE, WO E-Mail= ? AND password=?", new String[] {E-Mail, Passwort});
  • hey ein kleiner Vorschlag.. warum versuchst du nicht sowas schreiben eine Methode, in der SQLiteAdapter-Klasse zum abrufen der erforderlichen Daten zu? nur ein Vorschlag. Wenn die, die Sie schreiben, ist Pflicht, wir würden versuchen zu helfen, Ihren Weg selbst
  • Danke u ich werde alles versuchen, in dieser Phase wurde tryin ganzen Tag, damit es funktioniert! vielen Dank für ur help
  • Erstens haben Sie Daten in Ihrer Datenbank? Ich bezweifle dies, denn dies könnte der Grund sein, warum Sie werden immer null in Ihre cursor-Objekt
  • Sie sind mit der gleichen edittext-id sowohl usename und Passwort. Ich denke, man sollte dies ändern .. (das ist nicht der Grund für den Fehler, aber es kann reizen Sie später)
  • Ja, ich habe viele Daten in meiner db
  • Hey Liebes.. eine Sache zu Tun... Löschen Sie Ihre Datenbank aus der ddms-Ansicht und führen Sie den code erneut.. dein code ist perfekt.. es ist für mich arbeiten. (nun, ich würde vorschlagen, iTech Lösung.. es ist einfacher, um die Anwendung zu deinstallieren, anstatt es zu löschen von der ddms-Ansicht)
  • thank u so viel für alle ur Hilfe, ich versuche es jetzt und ich will let u wissen, ob es funktioniert 🙂
  • hey, gereinigt Projekt, deinstalliert es, selbst änderte den Namen meiner db habe ich angelegt, eine neue db, aber immer noch nicht funktioniert,werden immer noch angezeigt "Leider aufgehört zu arbeiten" Wunder wud es sein, denn ich habe meine db-Arbeit in main thread??
  • Hoppla, das ist wirklich krass
  • Ich weiß, ich verstehe nicht, an allen, cud es sein, etwas zu tun mit allen meinen anderen Aktivitäten vielleicht?? lief aus Ideen, die in dieser Phase!!
  • Können Sie das Projekt freigeben, mit der Sie arbeiten..

InformationsquelleAutor user1877082 | 2013-02-14
Schreibe einen Kommentar