2014-09-10 3 views
3

나는 이클립스에서 새롭고 소프트 키보드에서 완료 버튼을 누른 후에 editText에서 포커스를 지워서 커서를 숨겨야한다. 완료되면 이클립스 editText 제거 포커스 (커서)

나는 발견 다른 사람이 코드가 작동 :

editText.setOnEditorActionListener(new OnEditorActionListener() {   
@Override 
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
    if(actionId==EditorInfo.IME_ACTION_DONE){ 
     //Clear focus here from edittext 
     editText.clearFocus(); 
    } 
return false; 
} 
}); 

활동

package com.iprogettisti.cppp; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.app.ActionBarActivity; 
import android.view.KeyEvent; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.inputmethod.EditorInfo; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.TextView.OnEditorActionListener; 

public class VisualizzaPagina extends ActionBarActivity { 

EditText edittext = (EditText) findViewById(R.id.editText1); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (MainActivity.TipoPagina == 1) { 
     setContentView(R.layout.fragment_visualizza_pagina);    
    } 
    else if (MainActivity.TipoPagina == 2) { 
     setContentView(R.layout.fragment_visualizza_pagina2);   
    } 
    else if (MainActivity.TipoPagina == 3) { 
     setContentView(R.layout.fragment_visualizza_pagina3);   
    } 
    else if (MainActivity.TipoPagina == 4) { 
     setContentView(R.layout.fragment_visualizza_pagina4);   
    } 
    else if (MainActivity.TipoPagina == 5) { 
     setContentView(R.layout.fragment_visualizza_pagina5);   
    } 

    edittext.setOnEditorActionListener(new OnEditorActionListener() {   
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if(actionId==EditorInfo.IME_ACTION_DONE){ 
      //Clear focus here from edittext 
      edittext.setCursorVisible(false); 
     } 
    return false; 
    } 
    }); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.visualizza_pagina, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 


/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(
       R.layout.fragment_visualizza_pagina, container, false); 
     return rootView; 
    } 
} 
} 

의 코드를하지만 난 그 일을 얻는 방법을 알아낼 질수. 그 코드는 어디에 두어야합니까? 또한 첫 줄 "editText"에서 오류가 발생하지 않았으므로 편집 텍스트의 고유 ID를 제공하기 위해 tryied하지만 작동하지 않았습니다.

+0

은 당신의 코드를 게시 후 - 활동 첫번째 글고 당신이 글고 글고 = (글고) findViewById를를 사용하여 첫 번째 초기화 할 필요가 글고 클래스의 referance에가 (당신이 자바를 배울 필요가 – deniz

+1

야를 R.id.myedittext); 또한 EditText 클래스를 가져와야합니다. –

답변

4

EditText edittext = (EditText) findViewById(R.id.edittext1<your unique ID>); 


    edittext.setOnEditorActionListener(new OnEditorActionListener() {   
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if(actionId==EditorInfo.IME_ACTION_DONE){ 
       //Clear focus here from edittext 
       edittext.setCursorVisible(false); 
      } 
      return false; 
     } 
    }); 

    edittext.setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(View arg0, MotionEvent arg1) { 
       edittext.setCursorVisible(true); 
       return false; 
      } 
    }); 
+1

감사합니다 잘 작동하지만 지금은 텍스트를 다시 편집하면 커서가 표시되지 않습니다. beacius obviusly 내가 true로 setCursorVisible을 가져야합니다. 어떻게 edittext 필드에서 onClick 이벤트를 잡을 수 있습니까? – Achille911

+1

내 업데이트를 찾고 필요에 따라 작동하는지 알려주십시오. – Saraschandraa

+0

그 덕분에 완벽하게 작동했습니다. – Achille911

1

당신은 내 (또는 후) ID로보기를 찾아야에서 onCreate()를 사용해보십시오. 내부

이동 EditText edittext = (EditText) findViewById(R.id.editText1); 당신의 onCreate()super.onCreate()