小编Ioa*_* P.的帖子

CreationExtras 必须具有“SAVED_STATE_REGISTRY_OWNER_KEY”的值

我正在尝试在使用 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

51
推荐指数
6
解决办法
2万
查看次数

在导航图 NavGraph 中找不到与请求 NavDeepLinkRequest 匹配的导航目的地

我有一个导航图,如下所示:

@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)

在 ProductDetailsS​​creen 内,我希望单击产品以进一步导航到传递 Product 对象的详细信息屏幕:

LazyColumn {
    items(
        items = products
    ) { product ->
        ProductCard( …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose jetpack-compose-navigation

20
推荐指数
3
解决办法
2万
查看次数

有没有办法通过使用FirestoreRecyclerAdapter组合查询游标来分页查询?

我有一个看起来像这样的查询:

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

9
推荐指数
1
解决办法
1166
查看次数

FirebaseInstanceId 不再存在

我刚刚升级了我所有的 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?

java android gradle firebase firebase-realtime-database

8
推荐指数
4
解决办法
8127
查看次数

如何在 Android Studio 中创建新的可组合函数?

每次,我需要创建一个可组合函数,我都会这样做:

右键单击包 -> 新建 -> Kotlin 类/文件

我最终得到的是这样的:

class MyClass {}
Run Code Online (Sandbox Code Playgroud)

现在我必须手动进行三项更改:

  1. 添加@Composable注释
  2. 更改classfun
  3. 创建 constructor

这真的很烦人。但这是结果:

@Composable
fun MyClass(
    //Add arguments
) {
    //Add logic
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能更快地完成这个操作?Android Studio 有快捷键吗?我在菜单中找不到任何东西。

android kotlin android-studio android-jetpack-compose composable

7
推荐指数
1
解决办法
968
查看次数

如何从Firestore查询中排除元素?

我有用户的集合,我想从数据库中查询所有用户,并在显示它们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)

java android kotlin firebase google-cloud-firestore

6
推荐指数
3
解决办法
3723
查看次数

如何将片段的上下文转换为 LifecycleOwner?

我有以下场景。我有一个包含片段的活动。在这个片段中,我显示了来自后端数据库的一些记录。我也在使用一个看起来像这样的适配器:

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)

java android android-room android-livedata

6
推荐指数
1
解决办法
5763
查看次数

将 compose 版本更新到 1.3.0-alpha01 时出现问题

我有一个 Android Studio 项目,当我使用 Kotlin 版本1.6.21和 compose 版本时,该项目运行良好1.2.0-rc011.7.10当我想将 Kotlin 和1.3.0-alpha01compose的两个依赖项更新到最新版本时,问题就出现了。我得到的错误是:

无法解析配置“: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

6
推荐指数
2
解决办法
2573
查看次数

如何自动为Cloud Firestore创建索引?

我有一个集合,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 firebase google-cloud-firestore

5
推荐指数
1
解决办法
2170
查看次数

Android Studio更新到版本3.1错误

我刚刚将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-studio

5
推荐指数
1
解决办法
645
查看次数