我正在尝试在使用 Jetpack Compose 构建的应用程序中实现导航,但是当我尝试从一个屏幕导航到另一个屏幕时,我得到:
java.lang.IllegalArgumentException:CreationExtras 必须有一个值
SAVED_STATE_REGISTRY_OWNER_KEY
我在用着:
implementation "androidx.hilt:hilt-navigation-compose:1.0.0"
Run Code Online (Sandbox Code Playgroud)
这是代码:
if(viewModel.isAuthenticated) {
navController.navigate(Screen.Profile.route)
}
Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-navigation android-jetpack-compose
我有一个导航图,如下所示:
@Composable
fun NavGraph (
navController: NavHostController
) {
NavHost(
navController = navController,
startDestination = "Products"
) {
composable(
route = "Products"
) {
ProductsScreen(
navController = navController
)
}
composable(
route = "Product Details",
arguments = listOf(
navArgument("product") {
type = NavType.SerializableType(Product::class.java)
}
)
) {
val product = navController.previousBackStackEntry?.arguments?.getSerializable("product") as Product
ProductDetailsScreen(
navController = navController,
product = product
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
在 ProductDetailsScreen 内,我希望单击产品以进一步导航到传递 Product 对象的详细信息屏幕:
LazyColumn {
items(
items = products
) { product ->
ProductCard( …
Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-compose jetpack-compose-navigation
我有一个看起来像这样的查询:
Query first = ref.orderBy("name", Query.Direction.ASCENDING).limit(10);
Run Code Online (Sandbox Code Playgroud)
这是我向我显示数据的方式RecyclerView
.
firestoreRecyclerOptions = new FirestoreRecyclerOptions.Builder<ModelClass>().setQuery(query, ModelClass.class).build();
myFirestoreRecyclerAdapter = new MyFirestoreRecyclerAdapter(firestoreRecyclerOptions);
recyclerView.setAdapter(myFirestoreRecyclerAdapter);
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用此处指定的分页,但我无法解决它.
first.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentSnapshots) {
DocumentSnapshot lastVisible = documentSnapshots.getDocuments().get(documentSnapshots.size() - 1);
Query second = ref.orderBy("name", Query.Direction.ASCENDING).startAfter(lastVisible).limit(10);
//Create a firestoreRecyclerOptions and setting the adapter
}
});
Run Code Online (Sandbox Code Playgroud)
有没有办法通过组合使用查询游标来分页查询FirestoreRecyclerAdapter
?这甚至可能吗?
java android firebase android-recyclerview google-cloud-firestore
我刚刚升级了我所有的 Firebase 依赖项,但我遇到FirebaseInstanceId
了一个问题,不再被识别。我用它来获取令牌 ID,如下所示:
String tokenId = FirebaseInstanceId.getInstance().getToken();
Run Code Online (Sandbox Code Playgroud)
这是错误:
Cannot resolve symbol 'FirebaseInstanceId'
Run Code Online (Sandbox Code Playgroud)
这是我的 build.gradle 文件:
//Firebase
implementation 'com.google.firebase:firebase-auth:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.google.firebase:firebase-firestore:17.0.1'
//FirebaseUI
implementation 'com.firebaseui:firebase-ui-auth:4.0.0'
implementation 'com.firebaseui:firebase-ui-database:4.0.0'
implementation 'com.firebaseui:firebase-ui-firestore:4.0.0'
Run Code Online (Sandbox Code Playgroud)
如何使用最新的依赖项获取令牌 ID?
每次,我需要创建一个可组合函数,我都会这样做:
右键单击包 -> 新建 -> Kotlin 类/文件
我最终得到的是这样的:
class MyClass {}
Run Code Online (Sandbox Code Playgroud)
现在我必须手动进行三项更改:
@Composable
注释class
为fun
constructor
这真的很烦人。但这是结果:
@Composable
fun MyClass(
//Add arguments
) {
//Add logic
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能更快地完成这个操作?Android Studio 有快捷键吗?我在菜单中找不到任何东西。
android kotlin android-studio android-jetpack-compose composable
我有用户的集合,我想从数据库中查询所有用户,并在显示它们RecyclerView
除一人外,雷.这是我的数据库架构:
users [collection]
- uid [document]
- uid: "fR5bih7SysccRu2Gu9990TeSSyg2"
- username: "John"
- age: 22
- //other users
Run Code Online (Sandbox Code Playgroud)
如何查询数据库如下:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
Query q = db.collection("users").whereNotEqualTo("uid", uid);
Run Code Online (Sandbox Code Playgroud)
所以我需要将这个查询对象传递给一个FirestoreRecyclerOptions
对象,以便显示所有其他用户RecyclerView
.
这甚至可能吗?如果没有,我该如何解决?谢谢!
编辑:
options = new FirestoreRecyclerOptions.Builder<UserModel>()
.setQuery(query, new SnapshotParser<UserModel>() {
@NonNull
@Override
public UserModel parseSnapshot(@NonNull DocumentSnapshot snapshot) {
UserModel userModel = documentSnapshot.toObject(UserModel.class);
if (!userModel.getUid().equals(uid)) {
return userModel;
} else {
return new UserModel();
}
}
}).build();
Run Code Online (Sandbox Code Playgroud) 我有以下场景。我有一个包含片段的活动。在这个片段中,我显示了来自后端数据库的一些记录。我也在使用一个看起来像这样的适配器:
public class MovieAdapter extends PagedListAdapter<Movie, MovieAdapter.MovieViewHolder> {
private Context context;
public MovieAdapter(Context context) {this.context = context;}
@NonNull
@Override
public MovieViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//Create the view
}
@Override
public void onBindViewHolder(@NonNull final MovieViewHolder holder, int position) {
Movie movie = getItem(position);
String title = movie.title;
holder.titleTextView.setText(title);
MovieRepository movieRepository = new MovieRepository(context);
LiveData<Movie> liveData = movieRepository.retrieveFavoriteMovie(movie.id);
liveData.observe(context, m -> { //Error
if(m != null) {
boolean favorite = m.favorite;
if(favorite) {
//Do something
} else {
//Do …
Run Code Online (Sandbox Code Playgroud) 我有一个 Android Studio 项目,当我使用 Kotlin 版本1.6.21
和 compose 版本时,该项目运行良好1.2.0-rc01
。1.7.10
当我想将 Kotlin 和1.3.0-alpha01
compose的两个依赖项更新到最新版本时,问题就出现了。我得到的错误是:
无法解析配置“:app:kotlin-extension”的所有文件。找不到 androidx.compose.compiler:compiler:1.3.0-alpha01。在以下位置进行了搜索:
需要者:项目:应用程序
有什么帮助吗?
编辑:
现在我正在使用这些版本:
kotlinCompilerExtensionVersion '1.7.10'
implementation "androidx.compose.ui:ui:1.3.0-alpha01"
implementation "androidx.compose.material:material:1.3.0-alpha01"
implementation "androidx.compose.compiler:compiler:1.2.0"
Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-compose android-jetpack-compose-material3
我有一个集合,Lists
其中存储了一堆文档.每个文档都包含一些细节和一个集合users
.我users
使用uid作为键并将boolean作为值存储在Collection中的用户.这意味着只有那些用户才能阅读该特定列表.这是我的数据库结构.
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference listsRef = rootRef.collection("Lists");
Query query = listsRef.orderBy("date").whereEqualTo("users."+uid, true);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
FAILED_PRECONDITION: The query requires an index. You can create it here: ...
Run Code Online (Sandbox Code Playgroud)
如果我去控制台创建所需的索引,一切正常.但是是否有可能自动创建索引,因为我无法为加入我的应用程序的每个用户手动创建索引.如果我为每个用户提供了一些排序索引,是否会出现问题?
还有另一种解决方法吗?
提前致谢!
我刚刚将Android Studio更新为最新版本3.1,由于以下错误,我无法执行任何操作:
org.gradle.internal.resource.transport.http.HttpRequestException: Could not HEAD 'https://dl.google.com/dl/android/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom'.
Run Code Online (Sandbox Code Playgroud)
它还说:
Gradle project sync failed.
Run Code Online (Sandbox Code Playgroud)
这是我的错误的样子:
和
谢谢!
android ×9
kotlin ×5
firebase ×4
java ×4
android-jetpack-compose-material3 ×1
android-room ×1
composable ×1
gradle ×1