【问题标题】:How to call function of one Activity from other Activity or service?如何从另一个 Activity 或服务调用一个 Activity 的功能?
【发布时间】:2012-04-05 16:29:42
【问题描述】:

我需要从一项活动中调用一些函数。但是当我这样做时,它会给出空指针......错误。 我用这个作为我的例子, http://www.javacodegeeks.com/2010/09/android-text-to-speech-application.html

请看第 38 行,tts.speak(text, TextToSpeech.QUEUE_ADD, null);

所以,如果我像这样更改代码...

public class TTA extends Activity implements OnInitListener {

... ... ... ...

 public void MYCall()
 {
 tts.speak(text, TextToSpeech.QUEUE_ADD, null);
 }

... ... ...
}

然后从另一个活动中调用我的调用,就像这样,

TTA tta = new TTA();
tta.MYCall();

它不应该工作吗?它没有,但是当从 TTA 类中调用 MYCall() 时它可以工作。

感谢您的帮助。

【问题讨论】:

    标签: android class android-activity function-call


    【解决方案1】:

    很难判断发生了什么,因为您没有提供太多代码来检查。

    您是否正在为 Activity 生命周期方法中的文本转语音对象进行设置?如果您只是使用 new TTA() 实例化 Activity,这些将不会被调用,因此您的 Text-To-Speech 对象很可能尚未正确初始化。

    但是:我建议重新安排您的代码,以便与 Text-To-Speech 相关的方法不与特定的 Activity 耦合,因为您将在多个地方使用它。

    【讨论】:

      【解决方案2】:

      在调用onInit() 之前,您不能调用speak()tta.MYCall()

      因此,运行您的两行代码不可能一直有效。

      你需要这样的东西或重新安排你的代码:

      TTA tta = new TTA();
      while (!tta.isInitialized())
      {
        try
        {
        Thread.sleep(100);
        }
        catch (InterruptedException e)
        {}
      }
      tta.MYCall();
      

      【讨论】:

        猜你喜欢
        • 2016-05-26
        • 1970-01-01
        • 1970-01-01
        • 2017-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多