2017-02-12 32 views
0

我感兴趣的是如果我可以在主要活动类中设置一些常用的监听器吗?对于我的项目,我使用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或未来出乎意料)? 如果您为我提供一些阅读/观看资源,那将会非常棒。 谢谢。

+1

这通常是你如何抽象出你的代码。但这取决于你是否想通过在家长活动中抽象出所有你的活动 – Dibzmania

+0

@Dibzmania,这是一个问题。它是稳定的impl或android可以以某种方式关闭父母的活动,这种方式毁了整个应用程序? –

回答

0

抽象的完美例子,但不是一个真正的问题。

通过执行此操作,您不会得到任何nullpointers或其他错误。

+0

好的。只是想确定你知道。谢谢。 [8分钟接受你的回答] –