2017-04-14 20 views
0

私はアンドロイドアプリで指紋ログインを使用しています。onAuthenticationSucceededメソッドから別のクラスのメソッドを呼び出す方法は?

  • 認証が成功すると、onAuthenticationSucceededメソッドが呼び出されます。

  • 指紋の認証が成功した後、私はonAuthenticationSucceeded内のユーザー名を確認したいと思います。

  • しかし、onAuthenticationSucceededメソッド内の別のクラスのメソッド(ユーザー名を確認するため)を呼び出すことができませんでした。

アプリが常に停止しているようです。

私はそれを達成できますか? 私を助けてください。 は

public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result{
login log=new login(); log.unameCheck(); }

  • が、これはlogin.java

  • public void unameCheck(){
    String uname=edit_username.getText().toString(); String storedPassword=myDb.getSingleEntry(uname);
    if(storedPassword!=0){ Toast.makeText(login.this,"Login Successfull",Toast.LENGTH_LONG).show();
    Intent intent =new Intent("michel.maan.login1"); startActivity(intent);. } else { Toast.makeText(login.this,"Login failed",Toast.LENGTH_LONG).show(); } }

      のメソッドである、これは私のFingerprintHandler.javaであるあなたに

      • ありがとうございました

      • が、これはAndroidのモニターに表示例外はあなたがのインスタンスを作成する必要が

        Java.lang.NullPointerExceptio:Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference

      This is the code I referred for my project from android authority

    答えて

    0

    である私のDatabasehelper.java

    public String getSingleEntry(String userName){
    SQLiteDatabase db=this.getWritableDatabase();
    Cursor cursor=db.query("USER_TABLE".null,"NAME=?",new String[]{username},null,null,null); if(cursor.getCount()<1){
    cursor.close();
    return"NOT EXIST" ; } cursor.moveToFirst(); String password=cursor.getString(cursor.getColumnIndex("PASSWORD")); cursor.close();
    return password; }

  • ですクラスを呼び出して方法:

    void onAuthenticationSucceeded (...) { //in your onAuthenticationSucceeded method 
        ... 
        yourAnotherClass newInstance = new yourAnotherClass(...); //Make Instance of your verfying class 
        newInstance.verfyUserName (...); //call the Verifying Method 
    
        } 
    
  • +0

    呼び出すことができますが、verfyUsername()メソッドを呼び出すことはできません。 – Michel

    +0

    ログインログ=新しいログイン(); – Michel

    +0

    log.unameCheck(); – Michel

    0

    あなたのメソッド名は、VerifyUserName()であり、それはあなたに、その後SecondActivityであるとし、あなたの認証クラスであなたの他のクラスのオブジェクトを作成し、

    以下のように、そのオブジェクトを使用してそのメソッドを呼び出します成功した、

    SecondActivity sa = new SecondActivity(); 
    sa.VerifyUSerName(); 
    
    +0

    私はそれを試しましたが、unameCheck()は呼び出していません。 – Michel

    +0

    そのメソッドは何ですか? ブール値を返しますか? –

    +0

    public void unameCheck()データベースからユーザ名を確認し、成功すればメッセージを焼きます。 – Michel

    1

    以下のような最も簡単な方法は、onAuthenticatinSucceed方法にstartActivityになり、その意図

    で余分に合格しない認証でfirstActivity
    Intent intent=new Intent(this,SecondActivity.class); 
    intent.putExtra("authentication","done"); 
    startActivity(intent); 
    

    、今secondActiviyののonCreateでこの余分なを取得し、この

    if(getIntent.getExtra("authentication").equals("done")) 
    callVerifyUsername(); 
    

    のようにチェックし、必要ならばあなたも意図で、余分なようFingerprintActivityからユーザ名を渡すことができます。 ユーザー名が確認されていない場合、前の画面に取得したい場合は、単に私はそれを試してみました

    finish(); 
    
    +0

    私はそれができないことを恐れています。 FingerprintHandler.javaは、ログインアクティビティから呼び出されます。 – Michel

    +0

    どうぞご覧ください。私は自分の質問を編集しました。 – Michel

    +0

    同じクラスのユーザーを確認する場合、なぜ他のクラスにそれを書いていますか?同じクラスに書くことで簡単にできます。 –

    関連する問題