I'm trying to take input from microphone and show that info in my edittext I have tried doing it in another activity it works fine but when I try to attach it with my login activity, as soon as it is done taking input from microphone my application crashes. On other activity it works fine it shows my input on my edittext but something is wrong with this activity and I can't find the solution
public class login extends AppCompatActivity implements View.OnClickListener {
private TextToSpeech tts;
private EditText txv;
public boolean dispatchKeyEvent(KeyEvent event) {
int action = event.getAction();
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
if (action == KeyEvent.ACTION_DOWN) {
int count=1;
if(count==1){
Intent in1=new Intent(login.this, Signup.class);
startActivity(in1);}
if(count==2)
{
}
}
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (action == KeyEvent.ACTION_DOWN) {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, 10);
} else {
Toast.makeText(this, "Your Device Don't Support Speech Input", Toast.LENGTH_SHORT).show();
}
}
return true;
default:
return super.dispatchKeyEvent(event);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
txv = (EditText) findViewById(R.id.tx2);
setContentView(R.layout.activity_login);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
findViewById(R.id.signup).setOnClickListener(this);
initializeTextToSpeech();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
private void initializeTextToSpeech() {
tts= new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(tts.getEngines().size()==0) {
Toast.makeText(login.this, "There's no TTS engine on your Device"
, Toast.LENGTH_LONG).show();
finish();
} else{
tts.setLanguage(Locale.US);
tts.setSpeechRate(0.7f);
speak(" For new account Press volume up button 1 time and for login press volume up button 2 times.......To enter your username, press volume down button to activate your mic and speak your username");
}
}
});
}
protected void onPause(){
super.onPause();
tts.shutdown();}
public void speak(String message){
if(Build.VERSION.SDK_INT >= 21) {
tts.speak(message, TextToSpeech.QUEUE_FLUSH,null,null);
}
else {
tts.speak(message,TextToSpeech.QUEUE_FLUSH,null);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 10:
if (resultCode == RESULT_OK && data != null) {
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
txv.setText(result.get(0));
}
break;
}
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.signup:
startActivity(new Intent(this, Signup.class));
break;
}
}
}
Stacktrace
--------- beginning of crash
2019-03-18 15:53:00.801 9755-9755/com.example.naji.finalyear E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.naji.finalyear, PID: 9755
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=10, result=-1, data=Intent { (has extras) }} to activity {com.example.naji.finalyear/com.example.naji.finalyear.login}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:4053)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
at com.example.naji.finalyear.login.onActivityResult(login.java:111)
at android.app.Activity.dispatchActivityResult(Activity.java:6915)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4049)