如果,SeekBar能实现拖动进度条,下面显示数字,现在有个想法就是我下面输入数字,让进度条自动跳转到相应的位置,该怎么写呢?

解决方案 »

  1.   

    editText.addTextChangedListener(watcher);重写watcher的onTextChanged方法提取出text的值将其转化成int,然后在设置到seekbar上。
    注意转化的时候抛出的异常。
      

  2.   

    没明白,要不你看看我的程序
    //定义一个SeekBar和一个TextView
     
    private SeekBar seekBar;
    private TextView  textView; 
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    //根据ID值取得SeekBar对象
            seekBar = (SeekBar)findViewById(R.id.seekbar);
            seekBar.setMax(100);
           //为SeekBar设置监听器(这里使用匿名内部类)
            seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
    //复写OnSeeBarChangeListener的三个方法
    //第一个时OnStartTrackingTouch,在进度开始改变时执行
     
       @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
           
            }
     
    //第二个方法onProgressChanged是当进度发生改变时执行
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {
            // TODO Auto-generated method stub
            textView = (TextView)findViewById(R.id.edit);
            int i= seekBar.getProgress();
            textView.setText(""+i);
           
            }
    //第三个是onStopTrackingTouch,在停止拖动时执行
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
            textView = (TextView)findViewById(R.id.edit);
            int i= seekBar.getProgress();
            textView.setText(""+i);
           
            }
     
         });
        }
    }
    我这个就是最基本的SeekBar实现,不知道该怎么改
      

  3.   


    yourEditView.addTextChangedListener(new TextWatcher() { @Override
    public void onTextChanged(CharSequence s, int start, int before,
    int count) {
    //获取editview输入的值
    //更改seekbar相应的操作
    } @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
    int after) {
    } @Override
    public void afterTextChanged(Editable s) {
    }
    });
      

  4.   

    PS:对于editview获取的值(String) 需要做有效性判断
      

  5.   

    我是用seekBar.setProgress()
    把editView里的值读取出来,在用seekBar.setProgress(),这样应该可以吧
      

  6.   

    其实我在写一个蓝牙串口的程序,和单片机一起的,程序要求是接收的消息(数字)以进度条的形式显示,意思就是说单片机发给手机一个数,比如100,那么手机上进度条自动跳到100的位置上去。现在已经能实现发的第一个数能正常显示,但发第二个数的时候就不对了,比如第一次单片机发过来2,手机上进度条跳到了2,接着又发过来3,这时候进度条跳到了23,而不是3。贴一下我的接收程序:
        //接收数据线程
        Thread ReadThread=new Thread(){
        
         public void run(){
         int num = 0;
         byte[] buffer = new byte[1024];
         byte[] buffer_new = new byte[1024];
         int i = 0;
         int n = 0;
         bRun = true;
         //接收线程
         while(true){
         try{
         while(is.available()==0){
         while(bRun == false){}
         }
         while(true){
         num = is.read(buffer);         //读入数据
         n=0;
         String s0 = new String(buffer,0,num);
         fmsg+=s0;    //保存收到数据
         for(i=0;i<num;i++){
         if((buffer[i] == 0x0d)&&(buffer[i+1]==0x0a)){
         buffer_new[n] = 0x0a;
         i++;
         }else{
         buffer_new[n] = buffer[i];
         }
         n++;
         }
         String s = new String(buffer_new,0,n);
         smsg+=s;   //写入接收缓存
         if(is.available()==0)break;  //短时间没有数据才跳出进行显示
         }
         //发送显示消息,进行显示刷新
         handler.sendMessage(handler.obtainMessage());            
              }catch(IOException e){
              }
         }
         }
        };
        
        //消息处理队列
        Handler handler= new Handler(){
         public void handleMessage(Message msg){
         super.handleMessage(msg);
         dis.setText(smsg);   //显示数据 
         sv.scrollTo(0,dis.getMeasuredHeight()); //跳至数据最后一页
         progress=Integer.parseInt(smsg);
         seekBar.setProgress(progress);
         }
        };
      

  7.   

    还有声明忘了贴
        private TextView dis;       //接收数据显示句柄
        private ScrollView sv;      //翻页句柄
        private String smsg = "";    //显示用数据缓存
        private String fmsg = "";    //保存用数据缓存
        private SeekBar seekBar = null;
        private int progress = 0;