- 05, May 2023
- #1
Привет! Вот пример приложения с фактами о Чаке Норрисе на языке Kotlin:
phpCopy code
kotlinCopy code
kotlinCopy code
- Создайте новый проект в Android Studio с пустой активностью.
- Откройте файл
и добавьте в негоactivity_main.xml
для отображения фактов:TextView
phpCopy code
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.chucknorrisfacts.MainActivity">
<TextView
android:id="@+id/fact_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:layout_centerInParent="true"/>
</RelativeLayout>
- Создайте класс
для получения фактов о Чаке Норрисе:FactFetcher
kotlinCopy code
import org.json.JSONObject
import java.net.URL
class FactFetcher {
fun fetchFact(): String? {
val url = URL("https://api.chucknorris.io/jokes/random")
val jsonString = url.readText()
val json = JSONObject(jsonString)
return json.getString("value")
}
}
- В классе
получите факт и отобразите его вMainActivity
:TextView
kotlinCopy code
import android.os.Bundle
import android.os.AsyncTask
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
import java.lang.Exception
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
FetchFactTask().execute()
}
inner class FetchFactTask : AsyncTask<Void, Void, String>() {
override fun doInBackground(vararg params: Void?): String? {
val factFetcher = FactFetcher()
return try {
factFetcher.fetchFact()
} catch (e: Exception) {
null
}
}
override fun onPostExecute(result: String?) {
fact_textview.text = result ?: "Failed to fetch a fact"
}
}
}
Теперь запустите приложение, и оно будет показывать случайные факты о Чаке Норрисе при каждом запуске.