내 응용 프로그램에서 프래그먼트 및 뷰 페이지를 사용 중입니다. 나는 활동을 확장하지만 레이아웃이없는 스피치 클래스와는 별도의 텍스트를 가지고있다. FragmentAdapter 클래스에서이 클래스를 인스턴스화했습니다.이 클래스는 현재 화면의 활동에 따라 함수를 호출합니다. 그러나 텍스트를 음성 생성자로 인해 응용 프로그램이 강제 종료되는 결과가 발생합니다. 나는 getApplicationContext()와 className.this를 모두 사용해 왔지만 여전히 응용 프로그램을 충돌 시키더라도 음성 생성자에 대한 텍스트에서 범인이 컨텍스트라는 것을 알아 냈습니다. 코드는 다음과 같습니다.app에 충돌하는 텍스트 생성자 android
public class textToSpeech extends Activity{
TextToSpeech tts=null;
public textToSpeech()
{
Log.d("text to speech", "constructor");
tts = new TextToSpeech(textToSpeech.this , new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
Log.d("text to speech", "init");
if(status != TextToSpeech.ERROR)
{
Log.d("text to speech", "condition");
tts.setPitch(1.1f);
tts.setSpeechRate(0.4f);
tts.setLanguage(Locale.US);
}
}
});
}
친절하게이 문제를 해결하도록 안내합니다.
startActivity()를 사용하여 음성 활동에 텍스트를 시작했지만 음성 클래스에 텍스트의 메서드를 호출해도 여전히 NullPointerException이 발생합니다. 텍스트에서
tts.SpeakText("hello world"); // in fragmentPagerAdapter exception class
음성 클래스
public void SpeakText (String text)
{
Log.d("text to speech", "speaking");
if(text!=null)
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
안부에 (I 음성 클래스에 텍스트를 인스턴스화 한)
이미 그렇게했습니다. 여전히 앱 크래시. – user2498079
FragmentAdapter 확장 클래스에서 클래스를 인스턴스화합니다. 위 코드를 onCreate에 넣으면 startActivity를 사용하여 액티비티를 시작해야하는데, 비 액티비티 클래스에서는 할 수 없습니다. – user2498079
그래서 'Activity'에서 확장되었지만 활동이 아닙니다. 'startActivity()'로 시작하지 않으면 컨텍스트를 얻기 위해'Activity'를 확장하면됩니다. 디자인을 재고해야합니다. – Dalmas