Incapable de Détruire l'activité d'Erreur
Im nouveau dans android... quand je presse le bouton de retour, il me donne l'Erreur ci-dessous...12-01 11:10:07.952: E/AndroidRuntime(3171): FATAL EXCEPTION: main
12-01 11:10:07.952: E/AndroidRuntime(3171): java.lang.RuntimeException: Unable to destroy activity {com.example.IranNara/com.example.IranNara.FirstPage}: java.lang.NullPointerException
12-01 11:10:07.952: E/AndroidRuntime(3171): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3655)
12-01 11:10:07.952: E/AndroidRuntime(3171): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3673)
12-01 11:10:07.952: E/AndroidRuntime(3171): at android.app.ActivityThread.access$2900(ActivityThread.java:125)
12-01 11:10:07.952: E/AndroidRuntime(3171): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
12-01 11:10:07.952: E/AndroidRuntime(3171): at android.os.Handler.dispatchMessage(Handler.java:99)
12-01 11:10:07.952: E/AndroidRuntime(3171): at android.os.Looper.loop(Looper.java:123)
12-01 11:10:07.952: E/AndroidRuntime(3171): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-01 11:10:07.952: E/AndroidRuntime(3171): at java.lang.reflect.Method.invokeNative(Native Method)
12-01 11:10:07.952: E/AndroidRuntime(3171): at java.lang.reflect.Method.invoke(Method.java:521)
12-01 11:10:07.952: E/AndroidRuntime(3171): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-01 11:10:07.952: E/AndroidRuntime(3171): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-01 11:10:07.952: E/AndroidRuntime(3171): at dalvik.system.NativeStart.main(Native Method)
12-01 11:10:07.952: E/AndroidRuntime(3171): Caused by: java.lang.NullPointerException
12-01 11:10:07.952: E/AndroidRuntime(3171): at com.example.IranNara.FirstPage.onDestroy(FirstPage.java:133)
12-01 11:10:07.952: E/AndroidRuntime(3171): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3642)
et mon code d'activité est:
Button Nara;
SQLiteDatabase mydb;
String Text="";
//private static String DBNAME = "PDA";
private static String TABLE = "Users";
public static Integer StartFlag;
//LinearLayout linearL;
//public static String storedPersonelNo = "";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_xml);
Nara = (Button)findViewById(R.id.btnNara);
StartFlag =0;
final NaraAdapter mydb = new NaraAdapter(this);
mydb.createDatabase();
mydb.open();
//System.out.println("My DB is:::: "+mydb);
//For Login
final Dialog dialog = new Dialog(FirstPage.this);
dialog.setContentView(R.layout.login);
dialog.setTitle("Login");
final EditText editTextUserName=(EditText)dialog.findViewById(R.id.editTextUserNameToLogin);
final EditText editTextPassword=(EditText)dialog.findViewById(R.id.editTextPasswordToLogin);
//----------for entering on Exit Button------------------------------------------------------------------------------------------
if( getIntent().getBooleanExtra("Exit", false)){
finish();
return;
}
//-----------------------------------------------------------------------------------------------------------------------//********click on IranNara Button
Nara.setOnClickListener(new View.OnClickListener() {
//Click on Cancel Button
public void onClick(View v)
{
Button btnLogin=(Button)dialog.findViewById(R.id.buttonLogin);
Button Cancel = (Button)dialog.findViewById(R.id.btncancel);
dialog.show();
Cancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
editTextPassword.setText("") ;
}});
//Click on Login Button
btnLogin.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//get The User name and Password
String userName=editTextUserName.getText().toString();
String password=editTextPassword.getText().toString();
//fetch the Password
String storedPassword = getSinlgeEntry(userName,1);
System.out.println("storedPassword:"+storedPassword);
//check if the Stored password matches with Password entered by user
if(password.equals(storedPassword))
{
Toast.makeText(FirstPage.this, "Congrats: Login Successfull", Toast.LENGTH_LONG).show();
//Entered to Messages
String storedPersonelNo = getSinlgeEntry(userName,2);
Intent Startmain = new Intent(FirstPage.this, Main.class);
Startmain.putExtra("PersonelNumber", storedPersonelNo);
//SharedPreferences settings = getSharedPreferences(storedPersonelNo, 0);
dialog.dismiss();
StartFlag=1;
startActivityForResult(Startmain, 0);
}
else
{
Toast.makeText(FirstPage.this, "User Name or Password does not match", Toast.LENGTH_LONG).show();
}
}
});
}
});
}
//--------------------------------------------------------------------METHODS---------------------------------------------------------------------------------------------------------------
public String getSinlgeEntry(String userName,Integer n)
{
NaraDatabaseHandler DH = new NaraDatabaseHandler(this);
mydb = DH.getReadableDatabase();
//System.out.println("My DB is:::: "+mydb);
Cursor cursor=mydb.query(TABLE, null, " UserName=?", new String[]{userName}, null, null, null);
if(cursor.getCount()<1)
{
cursor.close();
return "NOT EXIST";
}
cursor.moveToFirst();
if (n==1){
Text= cursor.getString(cursor.getColumnIndex("Password"));}
if(n==2){
Text= cursor.getString(cursor.getColumnIndex("PersonelNo"));}
cursor.close();
return Text;
}
@Override
protected void onDestroy() {
super.onDestroy();
mydb.close();
//StartFlag = null;
}`
OriginalL'auteur Mina | 2013-12-01
Vous devez vous connecter pour publier un commentaire.
Quand
password
n'est pas égal àstoredPassword
puismydb
instance est nulle et que vous tentez d'appelerclose()
méthode afin de mettreNULL
vérifier avant d'appeler close() dansonDestroy
:OriginalL'auteur ρяσѕρєя K
semble que le mydb est déjà nulle lorsque vous essayez de le fermer dans la méthode onDestroy.
Essayez ceci:
Bw, vous devez ouvrir et fermer la db dans le getSinlgeEntry méthode. Vous n'avez pas besoin de la fermer dans le onDestroy
OriginalL'auteur Sayed Jalil Hassan