Android从片段中调用对象

时间:2016-08-25 11:50:25

标签: android android-studio android-fragments

我不确定如何处理我打算做的事情。我有一个包含三个片段的应用程序,每个片段由一个带有导航抽屉的活动导航。

我有一个文本到语音类,它将文本初始化为语音引擎。问题是,它需要被多个不同的片段使用。我的想法是在主Activity中创建一个TTS类的对象并扩展函数,以便片段可以调用它们,如下所示:

@Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mTextToSpeechService = ((NavigationActivity)this.getActivity()).GetTextToSpeechService();
    }

我在这里看到的问题是,如果我需要做一些事情,例如在一个片段中更改语言,该怎么办?这意味着我必须公开另一个函数来设置活动中的TTS类,这似乎不对。

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

有三种选择:

  • 从应用程序继承并存储单例。您可以看到如何执行此操作here
  • 创建已启动的服务并在活动中使用它。(不受限制)请参阅link
  • SharedPreferences中存储语言设置,并将其应用于活动生命周期方法中的textspeech引擎(onResume方法)。

服务专为未连接到UI的任务而设计。如果要完成太多工作,您可能会发现第三个选项可以成为此特定问题的候选者。