2017-12-13 24 views
-2

그냥 내 일반 기능을 Kotlin의 확장 기능으로 변환하고 싶습니다. 여기 Kotlin에서 확장 기능을 작성하려면 어떻게해야합니까?

내 기능, 당신도 할 수

fun hideKeyboard(activity: Activity) { 
    if (activity != null) { 
    activity.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_SATE_HIDDEN) 
    val view: View = activity.currentFocus 
     if (true) run { 
      val imm = activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager 
      imm.hideSoftInputFromWindow(view.windowToken, 0) 
       } 
      } 
     } 
+2

당신은'Activity'에 확장이 점을 만들려고 노력하고 있습니까? 지금까지 무엇을 시도 했습니까? – zsmb13

+0

'hideKeyboard (activity : Activity)'=>'Activity.hideKeyboard()'와'activity' =>'this'? – Selvin

+0

@Selvin 그것은 'Activity?'의 확장 일 수도 있으므로, null 체크가 여전히 의미가 있습니다. – zsmb13

답변

3

라는 IDE가 제공하는 자동 리팩토링과 : 장소는 수신기 변환 할 매개 변수에 커서를 눌러 Alt 키 + 을 입력하고 매개 변수를 수신기으로 변환을 선택하십시오.

결과는 다음과 같습니다

fun Activity.hideKeyboard() { 
    if (this != null) { // Note: this check is redundant, since the type is not-null 
     window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_SATE_HIDDEN) 
     val view: View = currentFocus 
     if (true) run { 
      val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager 
      imm.hideSoftInputFromWindow(view.windowToken, 0) 
     } 
    } 
} 
+0

'val view : View = currentFocus'는 NPE를 유발할 수 있습니다. nullable로 선언되어야합니다. – crgarridos