2016-01-05 71 views
0

我用一個抽象類來實現OnClickListener軟鍵盤,隱藏在每一個onClick事件

public abstract class HideKeyboardClickListener extends View implements View.OnClickListener { 

    public HideKeyboardClickListener(Context context) { 
     super(context); 
     setOnClickListener(this); 
     AppUtils.hideKeyboard((Activity) context); 
    } 

    @Override 
    public void onClick(View v) { 
    } 
} 

,並用它喜歡 -

button.setOnClickListener(new HideKeyboardClickListener(mActivity) { 
@Override 
public void onClick(View v) { 
    // Handle Click 
} 
}); 

但我沒有收到任何點擊事件。

+1

如果使用父活動,並implemens onClic kListener就可以了......然後將這個活動擴展到所有活動,那麼它肯定會起作用。 –

+0

然後我必須更改整個代碼。 – mjosh

+0

不,你不需要改變整個代碼..你只需要擴展該父母的活動.. –

回答

0

把你的按鈕的代碼單擊

  InputMethodManager inputManager = (InputMethodManager) 
      getSystemService(INPUT_METHOD_SERVICE); 

inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 
       InputMethodManager.HIDE_NOT_ALWAYS); 
1

步驟1. //首先創建一個BaseActivity類只是如下所示。沒有必要在你的清單中加入這個。

public class MyBaseActivity extends AppCompatActivity implements View.OnClickListener{ 


    @Override 
    public void onResume() { 
     super.onResume(); 

    } 

    @Override 
    public void onStop() { 
     super.onStop(); 

    } 

    @Override 
    public void onClick(View view) { 
     //call method to hide keyboard 
    } 
} 

步驟2. //然後程度上的所有活動類這樣的這項活動類..

public class HomeActivity extends MyBaseActivity { 
} 

這兩個步驟都足夠你想要的東西..它不會影響你的應用

0

試試這個方法

public static void hideKeyboard(Context context, View view) { 
     InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE); 
     inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); 
     inputMethodManager.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0); 
    }