diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000000000000000000000000000000000000..b3405b3b32436569d6c9166762efd07fff07e534 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +My Application \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000000000000000000000000000000000000..7643783a82f60b3b876fe58a9314fb50520df486 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,123 @@ +<component name="ProjectCodeStyleConfiguration"> + <code_scheme name="Project" version="173"> + <JetCodeStyleSettings> + <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> + </JetCodeStyleSettings> + <codeStyleSettings language="XML"> + <option name="FORCE_REARRANGE_MODE" value="1" /> + <indentOptions> + <option name="CONTINUATION_INDENT_SIZE" value="4" /> + </indentOptions> + <arrangement> + <rules> + <section> + <rule> + <match> + <AND> + <NAME>xmlns:android</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>xmlns:.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + <order>BY_NAME</order> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*:id</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*:name</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>name</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>style</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + <order>BY_NAME</order> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> + </AND> + </match> + <order>ANDROID_ATTRIBUTE_ORDER</order> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>.*</XML_NAMESPACE> + </AND> + </match> + <order>BY_NAME</order> + </rule> + </section> + </rules> + </arrangement> + </codeStyleSettings> + <codeStyleSettings language="kotlin"> + <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> + </codeStyleSettings> + </code_scheme> +</component> \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000000000000000000000000000000000000..79ee123c2b23e069e35ed634d687e17f731cc702 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ +<component name="ProjectCodeStyleConfiguration"> + <state> + <option name="USE_PER_PROJECT_SETTINGS" value="true" /> + </state> +</component> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..43ff9693a26e05fb9bcfd153913cbbd2725903fe --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK" /> +</project> \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1663009b3d98c1f01d4a62e3b77b8ee847155aff..56349a91147b3e73821a79c421ef25de463b87a2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,7 @@ plugins { alias(libs.plugins.androidApplication) alias(libs.plugins.jetbrainsKotlinAndroid) + kotlin("kapt") version "1.7.21" } android { @@ -9,7 +10,7 @@ android { defaultConfig { applicationId = "com.example.myapplication" - minSdk = 34 + minSdk = 33 targetSdk = 34 versionCode = 1 versionName = "1.0" @@ -55,4 +56,13 @@ dependencies { testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) -} \ No newline at end of file + implementation("androidx.room:room-runtime:2.4.0") + kapt("androidx.room:room-compiler:2.4.0") + implementation("androidx.room:room-ktx:2.4.0") + testImplementation("androidx.room:room-testing:2.4.0") + implementation("com.google.android.gms:play-services-location:<version>") +} + +//dependencies { +// classpath ("androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0-rc01") +//} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3c98a8ba53033802c3db9594a1fabe427c682126..7b06fcae6e487926851e50d7edecc6ba5d3349e7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,9 @@ xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> + <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <application android:allowBackup="true" diff --git a/app/src/main/java/com/example/myapplication/AddTransactionActivity.kt b/app/src/main/java/com/example/myapplication/AddTransactionActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..36f4a204d085b46ec58fc593cf83156abc5d6d1f --- /dev/null +++ b/app/src/main/java/com/example/myapplication/AddTransactionActivity.kt @@ -0,0 +1,117 @@ +package com.example.myapplication + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.widget.Toast +import androidx.lifecycle.ViewModelProvider +import com.example.myapplication.database.TransactionDatabase +import com.example.myapplication.entities.TransactionEntity +import com.example.myapplication.repository.TransactionRepository +import com.example.myapplication.viewmodel.TransactionViewModel +import java.util.Date +import android.widget.EditText +import android.widget.Button + +import android.location.Location +import kotlinx.coroutines.launch +import androidx.lifecycle.lifecycleScope +import android.annotation.SuppressLint +//import com.example.myapplication.util.LocationUtils +import androidx.core.app.ActivityCompat +import android.Manifest +import android.content.pm.PackageManager + + +class AddTransactionActivity : AppCompatActivity() { + private lateinit var titleEditText: EditText + private lateinit var nominalEditText: EditText + private lateinit var kategoriEditText: EditText + private lateinit var lokasiEditText: EditText + private lateinit var saveButton: Button + + private lateinit var transactionViewModel: TransactionViewModel + private lateinit var transactionRepository: TransactionRepository + + private var currentLocation: Location? = null + + companion object { + private const val LOCATION_PERMISSION_REQUEST_CODE = 123 + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.fragment_add_transaction) + + titleEditText = findViewById(R.id.editTextJudul) + nominalEditText = findViewById(R.id.editTextNominal) + kategoriEditText = findViewById(R.id.editTextKategori) + lokasiEditText = findViewById(R.id.editTextLokasi) + saveButton = findViewById(R.id.buttonSimpan) + + val transactionDao = TransactionDatabase.getInstance(this).transactionDao() + transactionRepository = TransactionRepository(transactionDao) + transactionViewModel = ViewModelProvider(this).get(TransactionViewModel::class.java) + + saveButton.setOnClickListener { + lifecycleScope.launch { + saveTransaction() + } + } +// getLocation() + } + + private suspend fun saveTransaction() { + val title = titleEditText.text.toString().trim() + val nominal = nominalEditText.text.toString().trim() + val kategori = kategoriEditText.text.toString().trim() + val lokasi = lokasiEditText.text.toString().trim() + val tanggal = Date() + + if (title.isEmpty() || nominal.isEmpty() || kategori.isEmpty() || lokasi.isEmpty()) { + Toast.makeText(this, "Isi semua atribut transaksi", Toast.LENGTH_SHORT).show() + return + } + + val transaction = TransactionEntity(1, title, nominal, kategori, lokasi, tanggal) + lifecycleScope.launch { + transactionViewModel.addTransaction(transaction) + Toast.makeText(this@AddTransactionActivity, "Transaksi berhasil ditambahkan", Toast.LENGTH_SHORT).show() + finish() + } + finish() + } + + +// @SuppressLint("MissingPermission") +// private fun getLocation() { +// if (LocationUtils.isLocationPermissionGranted(this)) { +// LocationUtils.requestLocationUpdates(this, object : LocationUtils.LocationCallback { +// override fun onLocationReceived(location: Location) { +// currentLocation = location +// lokasiEditText.setText("${location.latitude}, ${location.longitude}") +// } +// }) +// } else { +// ActivityCompat.requestPermissions( +// this, +// arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), +// LOCATION_PERMISSION_REQUEST_CODE +// ) +// } +// } +// +// override fun onRequestPermissionsResult( +// requestCode: Int, +// permissions: Array<out String>, +// grantResults: IntArray +// ) { +// super.onRequestPermissionsResult(requestCode, permissions, grantResults) +// if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) { +// if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { +// getLocation() +// } else { +// Toast.makeText(this, "Izin akses lokasi ditolak", Toast.LENGTH_SHORT).show() +// } +// } +// } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/converters/DateConverter.kt b/app/src/main/java/com/example/myapplication/converters/DateConverter.kt new file mode 100644 index 0000000000000000000000000000000000000000..6e7f5dc45b63a988bf3f2c979de029b98b817dfb --- /dev/null +++ b/app/src/main/java/com/example/myapplication/converters/DateConverter.kt @@ -0,0 +1,16 @@ +package com.example.myapplication.converters + +import androidx.room.TypeConverter +import java.util.Date + +class DateConverter { + @TypeConverter + fun fromDate(date: Date): Long { + return date.time + } + + @TypeConverter + fun toDate(timestamp: Long): Date { + return Date(timestamp) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/dao/TransactionDao.kt b/app/src/main/java/com/example/myapplication/dao/TransactionDao.kt new file mode 100644 index 0000000000000000000000000000000000000000..283d93d88e43713d578f98796d1fc42b82b88a82 --- /dev/null +++ b/app/src/main/java/com/example/myapplication/dao/TransactionDao.kt @@ -0,0 +1,25 @@ +package com.example.myapplication.dao + +import androidx.lifecycle.LiveData +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.Query +import androidx.room.Update +import androidx.room.Delete +import com.example.myapplication.entities.TransactionEntity + + +@Dao +interface TransactionDao { + @Insert + suspend fun insertTransaction(transaction: TransactionEntity): Long + + @Query("SELECT * FROM transactionentity") + fun getAllTransactions(): LiveData<List<TransactionEntity>> + + @Update + fun update(transaction: TransactionEntity) + + @Delete + fun delete(transaction: TransactionEntity) +} \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/database/TransactionDatabase.kt b/app/src/main/java/com/example/myapplication/database/TransactionDatabase.kt new file mode 100644 index 0000000000000000000000000000000000000000..8ea017f370054bb2fa8728873d8738f18437049c --- /dev/null +++ b/app/src/main/java/com/example/myapplication/database/TransactionDatabase.kt @@ -0,0 +1,32 @@ +package com.example.myapplication.database + +import com.example.myapplication.dao.TransactionDao +import com.example.myapplication.entities.TransactionEntity +import android.content.Context +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import com.example.myapplication.converters.DateConverter +import androidx.room.TypeConverters + + +@Database (entities = [TransactionEntity::class], version = 1) +@TypeConverters(DateConverter::class) +abstract class TransactionDatabase : RoomDatabase() { + abstract fun transactionDao(): TransactionDao + + companion object { + @Volatile + private var instance: TransactionDatabase? = null + + fun getInstance (context: Context): TransactionDatabase { + return instance ?: synchronized(this) { + instance ?: Room.databaseBuilder( + context.applicationContext, + TransactionDatabase::class.java, + "transaction_database" + ).build().also { instance = it } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/entities/TransactionEntities.kt b/app/src/main/java/com/example/myapplication/entities/TransactionEntities.kt new file mode 100644 index 0000000000000000000000000000000000000000..3ffb425afe36841c4d3b61027fdf3f06f222cd77 --- /dev/null +++ b/app/src/main/java/com/example/myapplication/entities/TransactionEntities.kt @@ -0,0 +1,29 @@ +package com.example.myapplication.entities + +import java.util.Date +import androidx.room.Entity +import androidx.room.PrimaryKey +import androidx.room.ColumnInfo + + +@Entity(tableName = "transactionentity") +data class TransactionEntity( + @PrimaryKey(autoGenerate = true) + @ColumnInfo(name = "id") + val id: Int = 0, + + @ColumnInfo(name = "title") + val title: String, + + @ColumnInfo(name = "nominal") + val nominal: String, + + @ColumnInfo(name = "kategori") + val kategori: String, + + @ColumnInfo(name = "lokasi") + val lokasi: String, + + @ColumnInfo(name = "tanggal") + val tanggal: Date +) \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/repository/TransactionRepository.kt b/app/src/main/java/com/example/myapplication/repository/TransactionRepository.kt new file mode 100644 index 0000000000000000000000000000000000000000..1e0c455e676d10a61ad30342e400d3a39f5478d0 --- /dev/null +++ b/app/src/main/java/com/example/myapplication/repository/TransactionRepository.kt @@ -0,0 +1,14 @@ +package com.example.myapplication.repository + +import androidx.lifecycle.LiveData +import com.example.myapplication.dao.TransactionDao +import com.example.myapplication.entities.TransactionEntity + + +class TransactionRepository(private val transactionDao: TransactionDao) { + val allTransactions: LiveData<List<TransactionEntity>> = transactionDao.getAllTransactions() + + suspend fun insertTransaction(transaction: TransactionEntity): Long { + return transactionDao.insertTransaction(transaction) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/ui/transactions/TransactionsFragment.kt b/app/src/main/java/com/example/myapplication/ui/transactions/TransactionsFragment.kt new file mode 100644 index 0000000000000000000000000000000000000000..6c4ada191072b6941f53ddbffd87e1a48b615030 --- /dev/null +++ b/app/src/main/java/com/example/myapplication/ui/transactions/TransactionsFragment.kt @@ -0,0 +1,45 @@ +//package com.example.myapplication.ui.transactions +// +//import android.os.Bundle +//import android.view.LayoutInflater +//import android.view.View +//import android.view.ViewGroup +//import androidx.fragment.app.Fragment +//import androidx.recyclerview.widget.LinearLayoutManager +//import androidx.recyclerview.widget.RecyclerView +//import com.example.myapplication.R +//import com.example.myapplication.data.Transaction +//import com.example.myapplication.data.TransactionAdapter +// +//class TransactionsFragment : Fragment() { +// +// private lateinit var recyclerView: RecyclerView +// private lateinit var transactionAdapter: TransactionAdapter +// private val transactionList = mutableListOf<Transaction>() +// +// override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { +// val root = inflater.inflate(R.layout.fragment_transactions, container, false) +// +// recyclerView = root.findViewById(R.id.recyclerViewTransactions) +// recyclerView.layoutManager = LinearLayoutManager(requireContext()) +// transactionAdapter = TransactionAdapter(transactionList) +// recyclerView.adapter = transactionAdapter +// +// return root +// } +// +// override fun onViewCreated(view: View, savedInstanceState: Bundle?) { +// super.onViewCreated(view, savedInstanceState) +// +// // Simulate loading transactions from a data source +// loadTransactions() +// } +// +// private fun loadTransactions() { +// transactionViewModel.allTransactions.observe(viewLifecycleOwner, { transactions -> +// transactionList.clear() +// transactionList.addAll(transactions.map { Transaction(it.title, it.nominal) }) +// transactionAdapter.notifyDataSetChanged() +// }) +// } +//} \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/util/LocationUtils.kt b/app/src/main/java/com/example/myapplication/util/LocationUtils.kt new file mode 100644 index 0000000000000000000000000000000000000000..4b22622a8c6a0c1357ffa855001edc6afcc55e51 --- /dev/null +++ b/app/src/main/java/com/example/myapplication/util/LocationUtils.kt @@ -0,0 +1,50 @@ +//package com.example.myapplication.util +// +//import android.content.Context +//import android.content.pm.PackageManager +//import android.location.Location +//import android.location.LocationListener +//import android.location.LocationManager +//import android.os.Bundle +//import androidx.core.content.ContextCompat +// +//object LocationUtils { +// +// interface LocationCallback { +// fun onLocationReceived(location: Location) +// } +// +// fun isLocationPermissionGranted(context: Context): Boolean { +// val permission = android.Manifest.permission.ACCESS_FINE_LOCATION +// val granted = PackageManager.PERMISSION_GRANTED +// return ContextCompat.checkSelfPermission(context, permission) == granted +// } +// +// fun requestLocationUpdates(context: Context, callback: LocationCallback) { +// val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager +// +// val locationListener = object : LocationListener { +// override fun onLocationChanged(location: Location) { +// callback.onLocationReceived(location) +// locationManager.removeUpdates(this) +// } +// +// @Deprecated("Deprecated in Java") +// override fun onStatusChanged(provider: String, status: Int, extras: Bundle) {} +// +// override fun onProviderEnabled(provider: String) {} +// +// override fun onProviderDisabled(provider: String) {} +// } +// +// try { +// val minTime: Long = 0 +// val minDistance = 0f +// val criteria = LocationManager.PASSIVE_PROVIDER +// @Suppress("DEPRECATION") +// locationManager.requestSingleUpdate(criteria, locationListener, null) +// } catch (e: SecurityException) { +// e.printStackTrace() +// } +// } +//} \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/viewmodel/TransactionViewModel.kt b/app/src/main/java/com/example/myapplication/viewmodel/TransactionViewModel.kt new file mode 100644 index 0000000000000000000000000000000000000000..a7e7748e4cca51bf3bc0be5c5f74a5909c1fe2f1 --- /dev/null +++ b/app/src/main/java/com/example/myapplication/viewmodel/TransactionViewModel.kt @@ -0,0 +1,22 @@ +package com.example.myapplication.viewmodel + +import androidx.lifecycle.ViewModel +import com.example.myapplication.dao.TransactionDao +import com.example.myapplication.entities.TransactionEntity + +class TransactionViewModel(private val transactionDao: TransactionDao) : ViewModel() { + + suspend fun addTransaction(transaction: TransactionEntity): Long { + return transactionDao.insertTransaction(transaction) + } + + fun getAllTransactions() = transactionDao.getAllTransactions() + + fun updateTransaction(transaction: TransactionEntity) { + transactionDao.update(transaction) + } + + fun deleteTransaction(transaction: TransactionEntity) { + transactionDao.delete(transaction) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_transaction_list.xml b/app/src/main/res/layout/activity_transaction_list.xml new file mode 100644 index 0000000000000000000000000000000000000000..58a86db7217e3717db4a9a2ea76722cf4358f2b8 --- /dev/null +++ b/app/src/main/res/layout/activity_transaction_list.xml @@ -0,0 +1,11 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerViewTransactions" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_transaction.xml b/app/src/main/res/layout/item_transaction.xml new file mode 100644 index 0000000000000000000000000000000000000000..324f70a311f4217786f23aac148585a019bdddf8 --- /dev/null +++ b/app/src/main/res/layout/item_transaction.xml @@ -0,0 +1,38 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="16dp"> + + <TextView + android:id="@+id/textViewDate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="16sp" + android:textStyle="bold" /> + + <TextView + android:id="@+id/textViewTitle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="16sp" /> + + <TextView + android:id="@+id/textViewCategory" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="14sp" /> + + <TextView + android:id="@+id/textViewPrice" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="14sp" /> + + <TextView + android:id="@+id/textViewLocation" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="14sp" /> + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 9439edab38a731e1bd60250d54ab6221c3df626a..4c1ded7b783dd8c8772799adc9529e29d6bcaec8 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -22,4 +22,11 @@ android:name="com.example.myapplication.ui.notifications.NotificationsFragment" android:label="@string/title_notifications" tools:layout="@layout/fragment_notifications" /> + + <fragment + android:id="@+id/navigation_transactions" + android:name="com.example.myapplication.ui.transactions.TransactionsFragment" + android:label="TRANSACTIONS" + tools:layout="@layout/activity_transaction_list" /> + </navigation> \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index a0985efc88dec705956b74f5d6e9ac23c8daebb8..bc982cbbf66dc79d62b21856f16d99b1d95aaea6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,4 +2,5 @@ plugins { alias(libs.plugins.androidApplication) apply false alias(libs.plugins.jetbrainsKotlinAndroid) apply false + kotlin("kapt") version "1.7.21" } \ No newline at end of file