diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt
index 3d6364714966494139cd2476077f79e35ec53a8c..1aa9d65f9b99fbeac16f7c955a136f8d36094639 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt
@@ -102,25 +102,25 @@ class AccountEditActivity : DaggerAppCompatActivity() {
     }
 
     nameValidator = object : TextValidator(
-      nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
+      this, nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
     ) {
       override fun validate(text: Editable) = text.isNotBlank()
     }
 
     hostValidator = object : TextValidator(
-      hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
+      this, hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
     ) {
       override fun validate(text: Editable) = text.toString().matches(Patterns.DOMAIN_NAME)
     }
 
     portValidator = object : TextValidator(
-      portWrapper::setError, resources.getString(R.string.hint_invalid_port)
+      this, portWrapper::setError, resources.getString(R.string.hint_invalid_port)
     ) {
       override fun validate(text: Editable) = text.toString().toIntOrNull() in (0 until 65536)
     }
 
     userValidator = object : TextValidator(
-      userWrapper::setError, resources.getString(R.string.hint_invalid_user)
+      this, userWrapper::setError, resources.getString(R.string.hint_invalid_user)
     ) {
       override fun validate(text: Editable) = text.isNotBlank()
     }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
index 8eeddd2db636ba8686f00f8ae663530b8ebf5a7e..8335989c33eadf4e98e7a49219a8a598fa9b5979 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
@@ -71,7 +71,7 @@ class AccountSetupConnectionSlide : SlideFragment() {
     val view = inflater.inflate(R.layout.setup_account_connection, container, false)
     ButterKnife.bind(this, view)
     hostValidator = object : TextValidator(
-      hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
+      requireActivity(), hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
     ) {
       override fun validate(text: Editable) =
         text.toString().matches(Patterns.DOMAIN_NAME)
@@ -79,7 +79,7 @@ class AccountSetupConnectionSlide : SlideFragment() {
       override fun onChanged() = updateValidity()
     }
     portValidator = object : TextValidator(
-      portWrapper::setError, resources.getString(R.string.hint_invalid_port)
+      requireActivity(), portWrapper::setError, resources.getString(R.string.hint_invalid_port)
     ) {
       override fun validate(text: Editable) = text.toString().toIntOrNull() in (0 until 65536)
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt
index 30e6c6a5b1c039c6b9c8e0c3d0367e1993e63e93..a2529953c37216793502b2047cd2de821300f694 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupNameSlide.kt
@@ -60,7 +60,7 @@ class AccountSetupNameSlide : SlideFragment() {
     val view = inflater.inflate(R.layout.setup_account_name, container, false)
     ButterKnife.bind(this, view)
     nameValidator = object : TextValidator(
-      nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
+      requireActivity(), nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
     ) {
       override fun validate(text: Editable) = text.isNotBlank()
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
index 6238b088f1851e8db396ccaf82197f77cbdf1ae4..c09bd2b1e200dc9f12ef3d4899b611ac7f15c95d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
@@ -69,7 +69,7 @@ class AccountSetupUserSlide : SlideFragment() {
     val view = inflater.inflate(R.layout.setup_account_user, container, false)
     ButterKnife.bind(this, view)
     userValidator = object : TextValidator(
-      userWrapper::setError, resources.getString(R.string.hint_invalid_user)
+      requireActivity(), userWrapper::setError, resources.getString(R.string.hint_invalid_user)
     ) {
       override fun validate(text: Editable) = text.isNotBlank()
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt
index f997f7dbc6278f12a3fb93a1b39fa9eb62cf30fa..75e5aeb3b1b6d5cc4be8a93de82116122049a8e3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupIdentitySlide.kt
@@ -80,7 +80,7 @@ class UserSetupIdentitySlide : SlideFragment() {
     val view = inflater.inflate(R.layout.setup_user_identity, container, false)
     ButterKnife.bind(this, view)
     nickValidator = object : TextValidator(
-      nickWrapper::setError, resources.getString(R.string.hint_invalid_nick)
+      requireActivity(), nickWrapper::setError, resources.getString(R.string.hint_invalid_nick)
     ) {
       override fun validate(text: Editable) = text.isNotEmpty() && text.matches(Patterns.IRC_NICK)
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt
index f6dab7357e1e6f34d0877ba3198c22d9b87ef2fd..f9d0450ba47e617e59c8bd1b90071f91e6da5727 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/user/UserSetupNetworkSlide.kt
@@ -124,14 +124,14 @@ class UserSetupNetworkSlide : SlideFragment() {
     val view = inflater.inflate(R.layout.setup_user_network, container, false)
     ButterKnife.bind(this, view)
     nameValidator = object : TextValidator(
-      nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
+      requireActivity(), nameWrapper::setError, resources.getString(R.string.hint_invalid_name)
     ) {
       override fun validate(text: Editable) = text.isNotBlank()
 
       override fun onChanged() = updateValidity()
     }
     hostValidator = object : TextValidator(
-      hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
+      requireActivity(), hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
     ) {
       override fun validate(text: Editable) =
         text.toString().matches(Patterns.DOMAIN_NAME)
@@ -139,7 +139,7 @@ class UserSetupNetworkSlide : SlideFragment() {
       override fun onChanged() = updateValidity()
     }
     portValidator = object : TextValidator(
-      portWrapper::setError, resources.getString(R.string.hint_invalid_port)
+      requireActivity(), portWrapper::setError, resources.getString(R.string.hint_invalid_port)
     ) {
       override fun validate(text: Editable) = text.toString().toIntOrNull() in (0 until 65536)
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/TextValidator.kt b/app/src/main/java/de/kuschku/quasseldroid/util/TextValidator.kt
index b4ad8989d3f4fb8fe3d8d1e15588dee5220d943a..ddffa3c428ade2420c5f5ba2a4f27ad86dddabf3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/TextValidator.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/TextValidator.kt
@@ -19,14 +19,18 @@
 
 package de.kuschku.quasseldroid.util
 
+import android.app.Activity
 import android.text.Editable
 import android.text.TextWatcher
 
-abstract class TextValidator(private val errorListener: (String?) -> Unit,
+abstract class TextValidator(private val activity: Activity,
+                             private val errorListener: (String?) -> Unit,
                              private val error: String) : TextWatcher {
   override fun afterTextChanged(p0: Editable) {
     isValid = validate(p0)
-    errorListener(if (isValid) null else error)
+    activity.runOnUiThread {
+      errorListener(if (isValid) null else error)
+    }
     onChanged()
   }