2014-04-12 48 views
1

我在我的一些片段中使用我主要活动的对象,其中一个是在我的MainActivity中定义并用于所有片段的SpeechHelper。从Fragment里面的FragmentActivity访问对象?

我知道两种方法在我的片段来使用这个对象:

-The第一个是把它传递给片段在它的构造。

-The二是要做到这一点:

((MainActivity) getActivity()).speechHelper.speak(getString(R.string.flashlight),TextToSpeech.QUEUE_FLUSH); 

我不知道这种方法是如何工作的,morover它早在MainActivity生命周期崩溃我的应用程序。

我想知道有什么方法可以做到这一点,什么是从我的碎片中的MainActivity(FragmentActivity)访问对象的首选方法。

回答

0

第一种是首选的方法。同样可以接受的是,如果有必要的话,可以通过调用后的构造函数传入。上面使用的方法仅在speechHelper是公共的时候才起作用,或者如果它受到保护并且片段位于同一个包中。直接访问变量通常是一个糟糕的主意,因为它违反了关注点的分离,并且如果重构可能会导致各种次要问题。

0

很多我曾经使用过的地方都有主要的活动实现一个监听器接口。您将绑定到片段的附件中,并在您的活动中使用该公共方法来使用该侦听器实例运行代码inmain activity。

相关问题