我正在按照 Amplify 文档向我的 Android 应用程序添加身份验证。我AuthException在这条线上得到一个:
Amplify.addPlugin(AWSCognitoAuthPlugin())
Run Code Online (Sandbox Code Playgroud)
我确实创建了一个用户池。我需要以某种方式附加它吗?有一些问题AWSMobileClient,我猜。
这是我的Application课:
class AppUtils : Application() {
override fun onCreate() {
super.onCreate()
try {
Amplify.addPlugin(AWSCognitoAuthPlugin())
Amplify.configure(applicationContext)
Log.d(TAG, "Initialized Amplify")
} catch (error: AmplifyException) {
Log.e(TAG, "Could not initialize Amplify", error)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是出现在 logcat 中的错误:
AuthException{message=无法实例化 AWSMobileClient,cause=java.lang.RuntimeException:未使用 Cognito Identity 或 Cognito UserPool。必须至少存在一个才能使用 AWSMobileClient。, recoverySuggestion=有关更多详细信息,请参阅附加的例外情况}
我正在实现到我的 Android 应用程序的深度链接,它仅在单击具有所需 url 的链接时才起作用,例如https://mydomain.co.il仅在外部浏览器中,如 Whatsapp 等。我知道,为了使应用程序链接在浏览器中工作,网站需要找到assetlinks.json文件athttps://mydomain.co.il/.well-known/assetlinks.json以验证我是域和应用程序的所有者。
所以我确实已经准备好了 assetlinks.json 文件,但是有人知道https://mydomain.co.il/.well-known/assetlinks.json在使用 Wix 作为平台时如何将该文件放在我的网站上的特定位置 () 中吗?
提前致谢
我正在使用 composeLazyColumn和 viewModel 通过在我的 viewModel 中更新列表项:
data class ContactsListUiState(
val contacts: MutableList<Contact>
)
@HiltViewModel
class ContactsViewModel @Inject constructor(savedStateHandle: SavedStateHandle) : ViewModel() {
private val _contactsListUiState = MutableStateFlow(ContactsListUiState(mutableListOf()))
val contactsListUiState: StateFlow<ContactsListUiState> = _contactsListUiState.asStateFlow()
private fun updateContactsList(newContacts: MutableList<Contact>) {
_contactsListUiState.update{ currentState ->
currentState.copy(
contacts = newContacts
)
}
}
Run Code Online (Sandbox Code Playgroud)
这样我的updateContactsList()函数就会更新 stateFlow,并且我应该在collectAsStateWithLifecycle()可组合函数内部收集联系人列表MainActivity
@OptIn(ExperimentalLifecycleComposeApi::class, ExperimentalFoundationApi::class)
@Composable
fun ContactsListScreen(
navController: NavController,
modifier: Modifier = Modifier
) {
Log.d("ViewModel", "ContactsListScreen recomposed")
val uiState by contactsViewModel.contactsListUiState.collectAsStateWithLifecycle()
Box(modifier = modifier) { …Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-compose kotlin-stateflow compose-recomposition
我的应用程序使用 hilt,我LoadManager在活动内部进行了一些工作,使用读取联系人ContentResolver,当我完成工作时,我得到发送到我的 viewModel 的光标,以便处理数据并执行一些业务逻辑,为此我声明了以下内容在我的活动之上:
@AndroidEntryPoint
class MainActivity : ComponentActivity(), LoaderManager.LoaderCallbacks<Cursor> {
private val contactsViewModel: ContactsViewModel by viewModels()
...
Run Code Online (Sandbox Code Playgroud)
这样我就可以在里面使用它onLoadFinished :
override fun onLoadFinished(loader: Loader<Cursor>, cursor: Cursor?) {
contactsViewModel.updateContactsListFromCursor(cursor, loader.id)
}
Run Code Online (Sandbox Code Playgroud)
在我的 viewModel 中,我有以下代码,它使用要显示的联系人更新列表的 ui 状态:
data class ContactsListUiState(
val contacts: MutableList<Contact>,
val searchFilter: String)
@HiltViewModel
class ContactsViewModel @Inject constructor() : ViewModel() {
private val _contactsListUiState =
MutableStateFlow(ContactsListUiState(mutableStateListOf(), ""))
val contactsListUiState: StateFlow<ContactsListUiState> = _contactsListUiState.asStateFlow()
private fun updateContactsList(filter: String) {
viewModelScope.launch(Dispatchers.IO) {
...
_contactsListUiState.update { currentState -> …Run Code Online (Sandbox Code Playgroud) android android-viewmodel android-jetpack-compose dagger-hilt jetpack-compose-navigation
我正在尝试将我的适配器转换为 ListAdapter,以便将来包含分页库。我的应用程序是一个基本的 2 片段笔记应用程序,第一个片段具有回收器视图,第二个片段具有用于将文本插入回收器视图的 EditText。我已经实现了所有内容,由于某种原因,我的 recyclerview 在调用 SubmitList() 后没有显示任何内容。我用适配器列表观察我的实时数据列表,并且我的实时数据列表正在从我查询数据的房间数据库中获取数据。在我将适配器转换为 ListAdapter 之前,一切正常
有什么建议么?
我的适配器类:
package com.example.mvvm_example
import android.content.Context
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.example.mvvm_example.db.Word
interface OnItemClickListener : View.OnClickListener {
override fun onClick(v: View?) {
}
}
class ListAdapterCallBack : DiffUtil.ItemCallback<Word>() {
override fun areItemsTheSame(oldItem: Word, newItem: Word): Boolean {
return oldItem.mWord == newItem.mWord
}
override fun areContentsTheSame(oldItem: Word, newItem: Word): Boolean {
return oldItem == newItem
}
}
class …Run Code Online (Sandbox Code Playgroud) android ×5
kotlin ×2
aws-amplify ×1
dagger-hilt ×1
deep-linking ×1
javascript ×1
listadapter ×1
velo ×1