2012-03-16 15 views
1

私は音声機能をvoiceAssistantsという新しいクラスに入れましたが、私が起動すると、常にnullポインタ例外エラーが発生します。結果の開始アクティビティがnullポインタ例外を取得する

音声アシスタント:

public class VoiceAssistants { 
    private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; 
    private static VoiceActivityHelper voiceAssistants; 
    public VoiceAssistants(){ 
     voiceAssistants = new VoiceActivityHelper(); 
    } 
    /** 
    * Start voice input 
    */ 
    public void starVoiceAssistants(){ 
     this.voiceAssistants.startVoiceRecognitionActivity(); 
    } 

    private static class VoiceActivityHelper extends Activity { 

     private static ArrayList<String> matches; 

     public ArrayList<String> getResultSet(){ 
      return matches; 
     } 

     private void startVoiceRecognitionActivity() { 
      Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
     intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
       RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
     intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, String.format(
       "%s_%s", Locale.getDefault().getLanguage(), Locale 
         .getDefault().getCountry())); 
     intent.putExtra(RecognizerIntent.EXTRA_PROMPT, 
       "Speech recognition demo"); 
         //error happen here!!! 
      startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); 
     } 
    } 
} 

しかし、私は新しいプロジェクトによって生成された通常の活動にそれを置くとき、それは背が高くないエラーになります。 ログ情報:

E/AndroidRuntime(22769): java.lang.NullPointerException 
E/AndroidRuntime(22769): 
at android.app.Activity.startActivityForResult(Activity.java:2827) 
E/AndroidRuntime(22769):  
at panda.com.db.VoiceAssistants$VoiceActivityHelper.startVoiceRecognitionActivity(VoiceAssistants.java:56) 
E/AndroidRuntime(22769):  
at panda.com.db.VoiceAssistants$VoiceActivityHelper.access$1(VoiceAssistants.java:47) 
E/AndroidRuntime(22769):  
at panda.com.db.VoiceAssistants.starVoiceAssistants(VoiceAssistants.java:24) 

plz help、ありがとうございます!

+0

あなたはこのような活動をすることはできません:voiceAssistants = new VoiceActivityHelper(); –

+0

'startVoiceRecognitionActivity'の完全なコードを投稿できますか? – MByD

+0

'RecognizerIntent.ACTION_RECOGNIZE_SPEECH'は何ですか? また、あなたのアンドロイドマニフェストにそのアクティビティクラスが正しく定義されていることを確認してください。 – wnafee

答えて

1

startActivityForResult()に電話していますが、これはActivityではありません。あなたのActivityは誰もアクセスできない私的な内部クラスです。

+0

のフルバージョンを投稿しましたので、公開に変更する必要がありますか? – panda

+0

はい、マニフェストで宣言する必要があります。 – CaseyB

関連する問題