setOnTouchListener问题

时间:2016-07-13 11:05:37

标签: android ontouchlistener

我写了这段代码,但有些人可以帮忙解决一些问题吗?

我的问题是:

当我发布我的应用按钮(“发送”)显示错误并且我的应用关闭时。我认为问题是这个代码

  

Rec.StopRecord();

但我不知道如何解决它!

这些是我的代码

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;
        }
    });

这是StopRecord

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

1 个答案:

答案 0 :(得分:1)

与onTouchListener / onClickListener一起一无所有。这是停止'mr'的问题

它是'IllegalState',我认为这是因为mr.stop()不是因为它被停止了。您必须添加一个布尔值来检查它是否已停止或启动。

boolean started = false;

如果您在代码中启动或停止它,请将其设置为true / false。然后在停止:

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