I am trying to build my first android app using kotlin.
I am following the tutorial https://aws.amazon.com/getting-started/hands-on/build-android-app-amplify/ because i want this app to use aws AIM and S3
Following the tutorial there seems to be some differences with the tutorial and the version of android i am creating. I have tried to make the correct changes.
for example in the build.gradle I do not have
<code>kotlin-android-extensions
<code>kotlin-android-extensions
</code>
kotlin-android-extensions
because i have
<code>buildFeatures {
viewBinding true
}
</code>
buildFeatures {
viewBinding true
}
Where I am having issues is with MainActivity
The project does not know what toolbar
<code>setSupportActionBar(toolbar)
<code>setSupportActionBar(toolbar)
</code>
setSupportActionBar(toolbar)
and item_list
<code>setupRecyclerView(item_list)
<code>setupRecyclerView(item_list)
</code>
setupRecyclerView(item_list)
I am getting Unresolved reference for both
Here is the entire file
<code>import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
//import kotlinx.android.synthetic.main.activity_main.*
//import kotlinx.android.synthetic.main.content_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
// prepare our List view and RecyclerView (cells)
setupRecyclerView(item_list)
// recycler view is the list of cells
private fun setupRecyclerView(recyclerView: RecyclerView) {
// update individual cell when the Note data are modified
UserData.notes().observe(this, Observer<MutableList<UserData.Note>> { notes ->
Log.d(TAG, "Note observer received ${notes.size} notes")
// let's create a RecyclerViewAdapter that manages the individual cells
recyclerView.adapter = NoteRecyclerViewAdapter(notes)
private const val TAG = "MainActivity"
<code>import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
//import kotlinx.android.synthetic.main.activity_main.*
//import kotlinx.android.synthetic.main.content_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
// prepare our List view and RecyclerView (cells)
setupRecyclerView(item_list)
}
// recycler view is the list of cells
private fun setupRecyclerView(recyclerView: RecyclerView) {
// update individual cell when the Note data are modified
UserData.notes().observe(this, Observer<MutableList<UserData.Note>> { notes ->
Log.d(TAG, "Note observer received ${notes.size} notes")
// let's create a RecyclerViewAdapter that manages the individual cells
recyclerView.adapter = NoteRecyclerViewAdapter(notes)
})
}
companion object {
private const val TAG = "MainActivity"
}
}
</code>
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
//import kotlinx.android.synthetic.main.activity_main.*
//import kotlinx.android.synthetic.main.content_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
// prepare our List view and RecyclerView (cells)
setupRecyclerView(item_list)
}
// recycler view is the list of cells
private fun setupRecyclerView(recyclerView: RecyclerView) {
// update individual cell when the Note data are modified
UserData.notes().observe(this, Observer<MutableList<UserData.Note>> { notes ->
Log.d(TAG, "Note observer received ${notes.size} notes")
// let's create a RecyclerViewAdapter that manages the individual cells
recyclerView.adapter = NoteRecyclerViewAdapter(notes)
})
}
companion object {
private const val TAG = "MainActivity"
}
}
This is the build.gradle file
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
namespace 'com.example.framewithaws'
applicationId "com.example.framewithaws"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
implementation libs.aws.android.sdk.core
implementation libs.aws.android.sdk.s3
implementation libs.aws.android.sdk.mobile.client
implementation libs.androidx.core.ktx
implementation libs.androidx.appcompat
implementation libs.material
implementation libs.androidx.constraintlayout
implementation libs.androidx.navigation.fragment.ktx
implementation libs.androidx.navigation.ui.ktx
testImplementation libs.junit
androidTestImplementation libs.androidx.junit
androidTestImplementation libs.androidx.espresso.core
<code>plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
}
android {
namespace 'com.example.framewithaws'
compileSdk 34
defaultConfig {
applicationId "com.example.framewithaws"
minSdk 24
targetSdk 34
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
viewBinding true
}
}
dependencies {
implementation libs.aws.android.sdk.core
implementation libs.aws.android.sdk.s3
implementation libs.aws.android.sdk.mobile.client
implementation libs.androidx.core.ktx
implementation libs.androidx.appcompat
implementation libs.material
implementation libs.androidx.constraintlayout
implementation libs.androidx.navigation.fragment.ktx
implementation libs.androidx.navigation.ui.ktx
testImplementation libs.junit
androidTestImplementation libs.androidx.junit
androidTestImplementation libs.androidx.espresso.core
}
</code>
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
}
android {
namespace 'com.example.framewithaws'
compileSdk 34
defaultConfig {
applicationId "com.example.framewithaws"
minSdk 24
targetSdk 34
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
viewBinding true
}
}
dependencies {
implementation libs.aws.android.sdk.core
implementation libs.aws.android.sdk.s3
implementation libs.aws.android.sdk.mobile.client
implementation libs.androidx.core.ktx
implementation libs.androidx.appcompat
implementation libs.material
implementation libs.androidx.constraintlayout
implementation libs.androidx.navigation.fragment.ktx
implementation libs.androidx.navigation.ui.ktx
testImplementation libs.junit
androidTestImplementation libs.androidx.junit
androidTestImplementation libs.androidx.espresso.core
}
I am not sure if more info is needed.
I am a real noob at this and just want it to compile so i can start understanding.
Thanks for any help