16 Entwicklungstipps für Android in Kotlin. Teil 3

Hallo nochmal! Im Vorgriff auf den Start des Grundkurses zur Android-Entwicklung teilen wir den letzten Teil des Artikels „16 Entwicklungstipps für Android in der Kotlin-Sprache“.




Lesen Sie den ersten Teil
Lesen Sie den zweiten Teil

LATEINIT


Eines der Hauptmerkmale von Kotlin ist die Verpflichtung zu null Sicherheit. Die lateinit-Anweisung bietet eine einfache Möglichkeit, die Sicherheit auf Null zu stellen und die Variable gemäß den Anforderungen von Android zu initialisieren. Diese Funktion ist großartig, aber Sie sollten sich nach der Arbeit in Java daran gewöhnen. Eine Idee ist, dass das Feld sofort mit der Fähigkeit deklariert wird, null zu sein:

var total = 0 var toolbar: Toolbar? = null 


Diese Sprachfunktion kann beim Arbeiten mit Android-Layouts zu Problemen führen, da wir nicht wissen, wie Ansichten deklariert werden, bevor das Layout deklariert wird, da nicht klar ist, wo sie in Activity oder Fragment . Dies wird durch zusätzliche Tests für die Möglichkeit eines Nullwerts an jedem Ort, mit dem wir interagieren, ausgeglichen, aber dieser ist immer noch Hämorrhoiden. Daher ist es besser, den lateinit Modifikator zu verwenden:

 lateinit var toolbar: Toolbar 

Als Entwickler sollten Sie jetzt erst auf die Symbolleiste verweisen, wenn sie tatsächlich initialisiert wurde. Dies funktioniert hervorragend in Verbindung mit einer Bibliothek wie Butter Knife :

 @BindView(R.id.toolbar) lateinit var toolbar: Toolbar override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) ButterKnife.bind(this) //       toolbar toolbar.setTitle("Hello There") } 

Typ Sicherheit


Einige Android-Konventionen erfordern eine sichere Eingabe, da eine regelmäßige Eingabe Codefehler nicht ausschließt. Eine typische Methode zum Erstellen eines Fragments in Aktion besteht beispielsweise darin, im FragmentManager zu überprüfen, ob es bereits vorhanden ist. Und nur wenn dies nicht der Fall ist, erstellen Sie es und fügen es der Aktion hinzu. Wenn Sie sich zum ersten Mal mit der Eingabe in Kotlin befassen, können Sie dies folgendermaßen implementieren:

 var feedFragment: FeedFragment? = supportFragmentManager .findFragmentByTag(TAG_FEED_FRAGMENT) as FeedFragment      .  as     ,     .   : var feedFragment: FeedFragment? = supportFragmentManager .findFragmentByTag(TAG_FEED_FRAGMENT) as? FeedFragment if (feedFragment == null) { feedFragment = FeedFragment.newInstance() supportFragmentManager.beginTransaction() .replace(R.id.root_fragment, feedFragment, TAG_FEED_FRAGMENT) .commit() } 

LEVERAGING LASSEN


Mit let können Sie einen Block ausführen, wenn der Wert des Objekts nicht Null ist. Auf diese Weise können Sie Nullprüfungen vermeiden und den Code besser lesbar machen. In Java sieht es so aus:

 if (currentUser != null) { text.setText(currentUser.name) }   Kotlin   : user?.let { println(it.name) } 

Dieser Code ist viel besser lesbar und erstellt automatisch eine Variable mit einem Wert ungleich Null, ohne dass das Risiko einer Nullsetzung besteht.

SNULLOREMPTY | ISNULLORBLANK


Wir müssen die Felder während der Entwicklung der Android-Anwendung mehrmals überprüfen. Wenn Sie dies ohne Kotlin geschafft haben, kennen Sie wahrscheinlich die TextUtils-Klasse in Android. Die TextUtils-Klasse lautet wie folgt:

 if (TextUtils.isEmpty(name)) { //    } 

In diesem Beispiel werden Sie feststellen, dass der Benutzer auch nur Leerzeichen als Benutzernamen festlegen kann und den Test besteht. isNullOrEmpty und isNullOrBlank sind in die Kotlin-Sprache integriert, sodass TextUtils.isEmpty ( someString ) nicht mehr someString und nur Leerzeichen überprüft werden müssen. Bei Bedarf können Sie Folgendes verwenden:

 //       ... if (number.isNullOrEmpty()) { //     } //  ... if (name.isNullOrBlank()) { //     } 

Die Überprüfung der Richtigkeit des Ausfüllens der Felder erfolgt häufig, wenn eine Registrierung in der Anwendung erforderlich ist. Diese integrierten Methoden eignen sich hervorragend, um das Feld zu überprüfen und den Benutzer zu warnen, wenn etwas nicht stimmt. Für komplexere Überprüfungen können Sie Erweiterungsmethoden verwenden, z. B. für E-Mail-Adressen:

 fun TextInputLayout.isValidForEmail(): Boolean { val input = editText?.text.toString() if (input.isNullOrBlank()) { error = resources.getString(R.string.required) return false } else if (emailPattern.matcher(input).matches()) { error = resources.getString(R.string.invalid_email) return false } else { error = null return true } } 

Tipps für Fortgeschrittene


Wussten Sie, dass Sie Lambda-Ausdrücke verwenden können, um saubereren und präziseren Code zu erstellen?

Wenn Sie zum Beispiel in Java arbeiten, ist es typisch, eine einfache Listener-Klasse zu haben, wie zum Beispiel:

 public interface OnClickListener { void onClick(View v); } 

Eine Besonderheit von Kotlin ist die Durchführung von SAM-Konvertierungen (Single Abstract Method) für Java-Klassen. Ein Klicklistener in Java, der so aussieht:

 textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // -  } });  Kotlin     : textView.setOnClickListener { view -> // -  } 

Seltsamerweise ist eine solche Konvertierung für in Kotlin erstellte SAM-Interfaces nicht möglich. Dies kann neue Kotlin-Benutzer überraschen und sogar ein wenig enttäuschen. Wenn dieselbe Schnittstelle in Kotlin definiert wäre, würde der Listener ungefähr so ​​aussehen:

 view.setOnClickListener(object : OnClickListener { override fun onClick(v: View?) { // -  } }) 

Um diesen Code zu verkürzen, können Sie Ihre Listener wie folgt in die Klasse schreiben:

 private var onClickListener: ((View) -> Unit)? = null fun setOnClickListener(listener: (view: View) -> Unit) { onClickListener = listener } //     onClickListener?.invoke(this) 

Dadurch kehren Sie zu einer einfachen Lambda-Syntax zurück, die eine automatische SAM-Konvertierung ermöglicht.

Fazit


Ich habe die nützlichsten Life-Hacks von allem gesammelt, was ich gelernt habe, seit ich mich für die Kotlin-Sprache interessiert habe. Ich hoffe, dass das Wissen über diese Tipps Sie bei der Entwicklung Ihrer eigenen Projekte erheblich unterstützen wird.

Das ist alles. Wir sehen uns auf dem Platz !

Source: https://habr.com/ru/post/de481010/


All Articles