2012-03-16 100 views
1

我把语音功能放到一个叫做voiceAssistants的新类中,但是当我启动它时,它总是给我一个空指针异常错误。开始活动结果获取空指针异常

语音助理:

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,thank you !!

+0

你不能使用这样的活动:voiceAssistants = new VoiceActivityHelper(); – 2012-03-16 14:57:31

+0

你可以发布'startVoiceRecognitionActivity'的完整代码吗? – MByD 2012-03-16 14:58:41

+0

你能告诉我们什么'RecognizerIntent.ACTION_RECOGNIZE_SPEECH'是什么? 另外请确保您的Android清单中正确定义了该活动类? – wnafee 2012-03-16 15:01:04

回答

1

你打电话给startActivityForResult()但这不是Activity。你的Activity是一个私人的内部类,没有其他人可以访问。

+0

所以我需要将其更改为公开? – panda 2012-03-16 15:45:06

+0

是的,你需要在你的清单中声明它。 – CaseyB 2012-03-16 17:06:43