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..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
db
ist NULL und Sie verwenden in die nächste Zeile!Beheben Sie ihn, indem Sie
SQLiteDatabase db = new SQLiteAdapter(LoginActivity.this).openToWrite();
openToWrite()
statteclipse
. richtig? Öffnen Sie das LogCat Fenster und kopieren Sie den Fehler von dort.LoginActivity.java line:165
?onCreate
Methodeclean
das Projekt aus eclipseuninstall
es völlig aus, den emulator neu zu installieren und erneut testen.verwenden Sie diese Abfrage
sind Sie mit '?' verwenden ? nur
Ich bin nicht sicher, aber Sie können versuchen, diese.
oder
Mir verzeihen, wenn ich falsch bin.
Ich glaube, Sie haben ein paar Fragen.
EmailAdd = (EditText)findViewById(R.id.password);
startActivity
auf der Rückkehr von einer Tätigkeit, wenn mit solltefinish
zur Rückkehr an die aufrufende Aktivität.Folgende ist eine Anpassung (abzüglich der Registrierung), dass pre-Register Benutzer und Kennwort ([email protected] mit password als Kennwort).
MainMenuActivity :-
activty_main_menu das layout von der MainMenuActivity :-
LoginActivity :-
login_activity layout von oben :-
SQliteAdapter
Hinweise
startActivityForResult
.Ergebnisse
Beim ersten Lauf springt sofort auf die login-Aktivität :-
Ungültiger Login-Versuch bleibt bei der oben erwähnten so dass Wiederholungen (bis zu 3) wenn 3. dann zurück zu MainMenuActivity mit Menü-Taste unsichtbar.
Gültige login-Versuch zurück zu MainMenuActivity making-Taste (Menü etc geht hier) sichtbar ist (macht auch nichts) :-