我现在想做一个这样的功能,点击edittext时得到焦点,修改edittext中的数据,当点屏幕别的地方的空地或者别的控件时,edittext失去焦点,这时将edittext中的数据保存到数据库中,请问该怎么做啊,初学,根据别的编程思路我想完成这个功能,谢谢各位大侠,请指点。
还有默认进入一个Activity时,唯一的一个edittext先不要获得焦点。

解决方案 »

  1.   

    1.点击屏幕其他地方失去焦点:
    edittext.setOnTouchListener(new View.OnTouchListener(){
       @Override  
       public boolean onTouch(View view ,MotionEvent event){
         if(event.getAction() == MotionEvent.ACTION_OUTSIDE){
            edittext.setFocusable(false);//EditText 失去焦点
            //其他要实现的功能。
         }
      }
    });2.进入一个Activity时,唯一的一个edittext先不要获得焦点:
       直接将eidttext的focusable 设成false :
       edittext.setFocusable(false);
      

  2.   

    edittext是继承view的,设置一个focus的监听
    void  setOnFocusChangeListener(View.OnFocusChangeListener l)
    然后直接里面去实现
    void  onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect)
    就可以了。
      

  3.   

    这个方法不管用啊
    edittext.setFocusable(false);这个管用
    不过我在
    public boolean onTouch(View v, MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_OUTSIDE){
    et.setFocusable(false);
    tv.setText("111111");
    //others
    }
    这个里面完全不管用啊
      

  4.   

    setOnFocusChangeListener也不管用的说
      

  5.   

    sorry.组件先获得焦点后,再用setFocusable(false)不会失去焦点,只会将它设为不可获取焦点。
      

  6.   

    这个时候你可以采用另外一种思路,转移焦点。我就是这么处理的。让这个layout上面的其他view获取焦点比如button,调用button的requestFocus方法即可。