2017-02-12 3 views
0

Ich bin interessiert, wenn ich einige gemeinsame Listener innerhalb der Hauptaktivitätsklasse festlegen kann? Für mein Projekt verwende ich FirebaseAuth, daher möchte ich es in MainActivity onCreate() initialisieren, benötigte Listener in onStart() und onStop() einrichten und dann diese Klasse in jeder anderen Aktivitätsklasse erben.Setzen Sie gemeinsame Listener in MainActivity-Klasse

Einige Code, den Sie bitte:]

MainActivity Klasse [parent]:

public class MainActivity extends AppCompatActivity { 
    private static final String TAG = MainActivity.class.getSimpleName(); 
    protected FirebaseAuthentication firebaseAuthentication; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     firebaseAuthentication = new FirebaseAuthentication(FirebaseAuth.getInstance(), FirebaseDatabase.getInstance()); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     firebaseAuthentication.addAuthStateListener(); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     firebaseAuthentication.removeAuthStateListener(); 
    } 
} 

AuthActivity Klasse [Kind]:

public class AuthActivity extends MainActivity implements FirebaseAuthentication.OnUserAuthListener { 
    @BindView(R.id.viewPager) LockableViewPager viewPager; 

    private String userUID; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_market); 
     ButterKnife.bind(this); 

     firebaseAuthentication.setOnUserAuthListener(this); 
     firebaseAuthentication.isSingedIn(); // check if user is singed in 
    } 

    @Override 
    // response for firebaseAuthentication.isSingedIn() above 
    public void onAuthSuccess(String userUID) { 
     this.userUID = userUID; 
    } 

    @Override 
    // response for firebaseAuthentication.isSingedIn() above 
    public void onAuthFailure(String message) { 
     snackbar(message); 
     Intent intent = new Intent(this, AuthActivity.class); 
     startActivity(intent); 
     finish(); // TODO mb should to delete it 
    } 
} 

Kann diese Implementierungen bringen mir Fehler (vielleicht NullPointerExeption oder was unerwartet in der Zukunft)? Wäre toll, wenn Sie mir einige Quellen zum Lesen/Ansehen zur Verfügung stellen. Danke.

+1

Dies ist normalerweise, wie Sie Ihren Code abstrahieren sollen. Aber es hängt wirklich davon ab, ob Sie dies alle Ihre Aktivitäten wollen, indem Sie es in einer Elternaktivität – Dibzmania

+0

@Dibzmania abstrahieren, so dass das eine Frage war. Ist es stabil impl oder Android kann die Elternaktivität irgendwie schließen und auf diese Weise ganze App ruinieren? –

Antwort

0

Perfektes Beispiel für Abstraktion, aber nicht wirklich eine Frage.

Sie erhalten keine nullpointers oder andere Fehler, indem Sie es wie folgt implementieren.

+0

Ok. Ich wollte nur sicher sein, dass du es weißt. Vielen Dank. [8 Minuten, um deine Antwort zu akzeptieren] –

Verwandte Themen