Android setOnTouchListener问题

Android setOnTouchListener问题,android,ontouchlistener,Android,Ontouchlistener,我写了这段代码,但有一些问题,有人可以帮助吗 我的问题是: 当我释放我的应用程序按钮(“发送”)时,显示错误并关闭我的应用程序。我认为问题在于这个代码 记录停止记录() 但是我不知道怎么修理它 这是我的密码 send.setOnClickListener(new OnClickListener() { public void onClick(View v) { Itemclick(); } }); send.setOnTo

我写了这段代码,但有一些问题,有人可以帮助吗

我的问题是:

当我释放我的应用程序按钮(“发送”)时,显示错误并关闭我的应用程序。我认为问题在于这个代码

记录停止记录()

但是我不知道怎么修理它

这是我的密码

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;
        }
    });
这是停止记录

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

它与onTouchListener/onClickListener毫无关系。这是阻止“mr”的问题

这是“非法状态”,我认为这是因为stop先生没有必要,因为他被阻止了。您必须添加一个布尔值来检查它是否已停止或启动

boolean started = false;
如果在代码中启动或停止它,请将其设置为true/false。然后在停车场:

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

您需要在调用停止时添加异常function@Amir133当它停止时,您可能正在停止它。这会导致例外情况。看到我的答案了吗