簡體   English   中英

如何從其他活動或服務調用一個活動的 function?

[英]How to call function of one Activity from other Activity or service?

我需要從一項活動中調用一些功能。 但是當我這樣做時,它會給出 null 指針...錯誤。 我用這個作為我的例子, 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 class 中調用 MYCall() 時,它會起作用。

謝謝您的幫助。

很難說出發生了什么,因為您沒有提供太多代碼來檢查。

您是否正在為 Activity 生命周期方法中的文本轉語音 object 進行設置? 如果您只是使用new TTA()實例化 Activity,則不會調用這些方法,因此很可能您的文本轉語音 object 尚未正確初始化。

但是:我建議重新安排您的代碼,以便與文本到語音相關的方法不與特定活動耦合,因為您將在多個地方使用它。

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

因此,運行您的兩行代碼不太可能一直有效。

您需要這樣的東西或重新安排您的代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM