我感兴趣的是如果我可以在主要活动类中设置一些常用的监听器吗?对于我的项目,我使用FirebaseAuth,因此我想在MainActivity onCreate()中初始化它,在onStart()和onStop()中设置所需的侦听器,然后在其他任何活动类中继承该类。把普通的听众放在MainActivity类内
一些代码来讨好你:]
MainActivity类别[家长]:
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类(孩子):
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
}
}
此实现可以使我的错误(也许NullPointerExeption或未来出乎意料)? 如果您为我提供一些阅读/观看资源,那将会非常棒。 谢谢。
这通常是你如何抽象出你的代码。但这取决于你是否想通过在家长活动中抽象出所有你的活动 – Dibzmania
@Dibzmania,这是一个问题。它是稳定的impl或android可以以某种方式关闭父母的活动,这种方式毁了整个应用程序? –