2016-07-13 3 views
-2

Ich schrieb diesen Code, aber habe ein Problem, einige kann helfen?setOnTouchListener Ausgabe

mein Problem ist:

, wenn ich meine App-Taste loslassen ("Senden") zeigen Fehler und meine app schließen. Ich denke, das Problem ist dieser Code

Rec.StopRecord();

aber ich weiß nicht, wie man es repariert!

das ist mein Code

send.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Itemclick(); 
     } 
    }); 

    send.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      switch(event.getAction()){ 
      case MotionEvent.ACTION_DOWN: 
      { 
      Rec=new Recorder(); 
      Rec.startRecord(); 
      break; 
      }      
      case MotionEvent.ACTION_UP: 
      { Rec.StopRecord(); 
       db.open(); 
       db.insert_offline(Rec.getName(), true, false); 
       listItems.add(Rec.getName()); 
       adapter.notifyDataSetChanged(); 
       db.close(); 
       Rec=null; 
       break; 
      } 
      } 
      return false; 
     } 
    }); 

und das ist StopRecord

public void StopRecord() 
{ 
    mr.stop(); 
    mr.release(); 
    mr = null; 
} 
+0

Sie benötigen Ausnahme hinzufügen, wenn Anruf-Stopp-Funktion – phongvan

+1

@ Amir133 Sie wahrscheinlich sind zu stoppen, wenn es gestoppt wird. Dies verursacht Ausnahmen. Siehe meine Antwort – Zoe

Antwort

0

Es hat nichts an allen mit onTouchListener/OnClickListener zu tun. Dies ist ein Problem beim Stoppen von 'Herr'

Es ist 'IllegalState' und ich denke, es ist, weil die Mr.stop() ist nicht erforderlich, weil es gestoppt ist. Sie müssen einen booleschen Wert hinzufügen, um zu überprüfen, ob er gestoppt oder gestartet wurde.

Setzen Sie es auf wahr/falsch, wenn Sie in Ihrem Code starten oder stoppen. Dann in dem Anhalten:

public void StopRecord(){ 
    if(started){ 
     mr.stop(); 
    } 
    mr.release();//maybe with this too 
    mr = null; 
} 
+0

was ??????????? – Zoe

+0

Es gibt nichts falsch mit dem onCLickListener. Wenn es im Stacktrace ist, ist es, weil es das reale Ereignis auslöst (mr.stop/mr.release). Soweit ich sehen kann, stimmt nichts damit. Wenn mit den Click-Listenern etwas nicht stimmt, ** FÜGE DIE FRAGE HINZU! **! Ich bin hier um eine Frage zu beantworten, nicht deine Gedanken lesen! – Zoe