android - Activity fragment 通信 : cluttering

标签 android android-fragments

要将内容传达给您的托管 ActivityAndroid Docs建议让您的 Activity 实现一些接口(interface),并将其转换为您的 Fragment 中的该接口(interface):

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {
        mListener = (OnArticleSelectedListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
    }
}

但是,如果您的 Activity 是许多 Fragment 的宿主,您的 Activity 声明将类似于:

public class MainActivity extends Activity implements ListenerA, ListenerB, ListenerC /* etcetera */

当然,这无助于提高可读性、模块化等,更不用说将所有已实现的方法都塞进 Activity 的主体本身了。

有没有更好的方法来实现这一点? 如果我没记错的话,建议不要手动为 Fragment 设置监听器,尽管我找不到这方面的来源。

最佳答案

我可以想到两种实现沟通的方法,但我认为它们可能是不好的做法,所以请谨慎对待!

第一种方法是使用 getActivity() 获取对更新它的 Activity 方法的引用。您只需要注意 fragment Activity 引用当前不为空即可。

第二种是使用广播通知 Activity 某些内容已更改,并使用广播接收器根据收到的广播执行不同的操作。 (似乎有点矫枉过正)。

关于android - Activity fragment 通信 : cluttering,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22643762/

相关文章:

android.database.CursorIndexOutOfBoundsException : Index -1 requested, 大小为 5

android - 嵌套的 AsyncTask 和 onPostExecute

android - 漏洞 : exchange between fragments

android - 动态添加 fragment 时出错 -java.lang.IllegalStateException :

Android - 使用构建器模式创建 fragment ?

无需滑动的Android选项卡布局

java - 删除 fragment 不起作用

java.lang.NoClassDefFoundError : android. support.v4.app.NavUtilsJB 在Android Studio中添加新模块时出错

android - 如何为 Android Activity 背景设置动画

android - 在 ListView 中延迟加载图像