2016-11-02 3 views
-1

Ich versuche, die Sinch Android SDK in meinem Projekt zu integrieren, und ich wollte die Anmeldeschaltfläche entfernen, d. H. So, dass die Aktivität zur nächsten Aktivität wechselt, ohne dass der Benutzer auf die Schaltfläche Anmelden klicken muss. Dazu habe ich den Code für setOnClickListener für die mLoginButton entfernt und stattdessen direkt die loginClicked()-Funktion aufgerufen, die zuvor aus der onClick()-Methode aufgerufen wurde.
Aber das verursacht NullPointerException: Attempt to invoke virtual method 'boolean com.example.yankee.cw.SinchService$SinchServiceInterface.isStarted()' on a null object reference.
Dies sind die einzigen Änderungen, die ich an den Code vorgenommen:Android - Warum ruft diese Funktion direkt anstelle von onClick eine NullPointerException auf?

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

     mLoginName = (EditText) findViewById(R.id.loginName); 

     mLoginButton = (Button) findViewById(R.id.loginButton); 
     mLoginButton.setEnabled(false); 
//  mLoginButton.setOnClickListener(new OnClickListener() { 
//   @Override 
//   public void onClick(View v) { 
//    loginClicked(); 
//   } 
//  }); 
     loginClicked(); 
    } 

Und früher war es diese wie: Statt

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

     mLoginName = (EditText) findViewById(R.id.loginName); 

     mLoginButton = (Button) findViewById(R.id.loginButton); 
     mLoginButton.setEnabled(false); 
     mLoginButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       loginClicked(); 
      } 
     }); 
    } 

Warum diese Arbeit nicht und die NullPointerException gibt?

Edit: LoginActivity.java

+0

bieten loginClicked() -Methode – Ishan

+0

Es ist bereits vorgesehen, wobei der Rest des Codes nach wie vor gleich ist. Tut mir leid, ich habe es nicht verlinkt. Ich habe den Link jetzt hinzugefügt. – Yankee

+0

@Yankee Bitte geben Sie die loginClicked() - Methode für das Verständnis des Problems. – LoveAndroid

Antwort

2

getSinchServiceInterface() Methode null zurückkehrt, das ist, warum Sie Null-Zeiger Ausnahme bekommen.

Früher wurde loginCliked() Methode aufgerufen, nachdem Schaltfläche in onServiceConnected Methode aktiviert wurde.

versuchen, loginClicked() Methode in onServiceConnected() Methode oder verwenden Sie einige Verzögerung.

+0

Wow, bro. Ich habe seit einer Woche über dieses Problem geweint. Und das hat einfach funktioniert. Danke vielmals. – Yankee

+0

Ihre Begrüßung :) – Ishan

+0

Würden Sie mir bitte kurz erklären, warum 'loginClicked()' in 'onServiceConnected()' eingefügt werden musste? – Yankee

1

Meine Lösung:

final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     loginClicked(); 
    } 
}, 4000); 
+1

Willkommen bei SO! Bitte überprüfen Sie die Formatierung Ihres Quellcodes - siehe http://meta.stackexchange.com/questions/22186/how-doi-i-format-my-code-blocks –

+0

@Dekel gut gemacht, du hast meinen Tag gerettet. –

Verwandte Themen