gpt4 book ai didi

java - 想要访问 firebase cloud firestore 但存在运行时错误

转载 作者:行者123 更新时间:2023-12-02 01:31:50 35 4
gpt4 key购买 nike

我想访问我的 Firebase 云 firestore,但我的代码中有错误。不知道为什么这段代码会出现一些错误

我的 Collection 名称是韩文。并想在“韩国”集合中添加文档。所以我调用了一些添加函数 Docsnippets.addShop(,,,)。

为了单独编译,编写了两个Java文件MainActivity.java和Docsnippets.java以及在Mainactivity调用的Docsnippets.addShop()

我认为应该正确运行,但我不知道为什么......

这是我第一次写java&android,很抱歉你读了一些糟糕的代码&english

感谢您阅读我的文章。

//debug
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.term, PID: 18908
java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.Arrays
at com.example.term.MainActivity$4.onComplete(MainActivity.java:108)
at com.google.android.gms.tasks.zzj.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7045)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
I/Process: Sending signal. PID: 18908 SIG: 9
Disconnected from the target VM, address: 'localhost:8600', transport: 'socket'
//logcat(?)
2019-04-30 02:17:23.642 3841-3882/? E/WindowManager: RemoteException occurs on reporting focusChanged, w=Window{d179055 u0 com.example.term/com.example.term.MainActivity}
android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:1143)
at android.view.IWindow$Stub$Proxy.windowFocusChanged(IWindow.java:500)
at com.android.server.wm.WindowState.reportFocusChangedSerialized(WindowState.java:3879)
at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:5426)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:65)
at com.android.server.ServiceThread.run(ServiceThread.java:44)
package com.example.term;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.GoogleAuthProvider;
import com.google.firebase.firestore.FirebaseFirestore;

import java.util.Arrays;

public class MainActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener {


private static final int RC_SIGN_IN = 10;
private GoogleApiClient mGoogleApiClient;
private FirebaseAuth mAuth;
private EditText editTextEmail;
private EditText editTextPassword;
private FirebaseFirestore mFirestore;
private DocSnippets db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFirestore = FirebaseFirestore.getInstance();
db = new DocSnippets(mFirestore);
mAuth = FirebaseAuth.getInstance();
editTextEmail = (EditText) findViewById(R.id.edittext_email);
editTextPassword = (EditText) findViewById(R.id.edittext_password);
Button emailLogin = (Button) findViewById(R.id.email_login_button);
SignInButton googleLogin = (SignInButton) findViewById(R.id.login_button);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();

googleLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);

}
});
emailLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
createUser(editTextEmail.getText().toString(), editTextPassword.getText().toString());
}
});
}
private void createUser(String email, String password) {
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
} else {
Toast.makeText(MainActivity.this, "Email 가입 성공", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
GoogleSignInAccount account = result.getSignInAccount();
firebaseAuthWithGoogle(account);
} else {
}
}
}

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
} else {
Toast.makeText(MainActivity.this, "Google 가입 성공", Toast.LENGTH_SHORT).show();
db.addShop("Korean", "내가찜한닭", "11:30:22:00", (Arrays) Arrays.asList("안동찜닭", "콜라"),(Arrays) Arrays.asList(18000, 3000));

}
}
});
}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
}

'''

'''java
package com.example.term;

import android.support.annotation.NonNull;
import android.util.Log;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreSettings;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
* Snippets for inclusion in documentation.
*/
@SuppressWarnings({"unused", "Convert2Lambda"})
public class DocSnippets implements DocSnippetsInterface {

private static final String TAG = "DocSnippets";
private static final ThreadPoolExecutor EXECUTOR = new ThreadPoolExecutor(2, 4,
60, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
private final FirebaseFirestore db;
DocSnippets(FirebaseFirestore db) {
this.db = db;
}
@Override
public void setup() {
// [START get_firestore_instance]
FirebaseFirestore db = FirebaseFirestore.getInstance();
// [END get_firestore_instance]

// [START set_firestore_settings]
FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
.setPersistenceEnabled(true)
.build();
db.setFirestoreSettings(settings);
// [END set_firestore_settings]
}

@Override
public void addShop(String Kinds, String Shop_name, String Time, Arrays Menu_name, Arrays Menu_price) {
// [START set_document]
System.out.println("OH NO!");
Map<String, Object> shop = new HashMap<>();
shop.put("name", Shop_name);
shop.put("time", Time);
shop.put("menu_name", Menu_name);
shop.put("menu_price", Menu_price);
db.collection(Kinds).document(Shop_name)
.set(shop)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully written!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error writing document", e);
}
});
// [END set_document]
}

@Override
public void getShop(String Kinds, String Shop_name) {
// [START get_document]
DocumentReference docRef = db.collection(Kinds).document(Shop_name);
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Log.d(TAG, "DocumentSnapshot data: " + document.getData());
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});
// [END get_document]
}

@Override
public void getAllUsers() {
// [START get_all_users]
db.collection("users")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
}
} else {
Log.w(TAG, "Error getting documents.", task.getException());
}
}
});
// [END get_all_users]
}

@Override
public void docReference() {
// [START doc_reference]
DocumentReference alovelaceDocumentRef = db.collection("users").document("alovelace");
// [END doc_reference]
}

@Override
public void collectionReference() {
// [START collection_reference]
CollectionReference usersCollectionRef = db.collection("users");
// [END collection_reference]
}

@Override
public void getAllDocs() {
// [START get_multiple_all]
db.collection("cities")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
// [END get_multiple_all]
}
}
'''

'''
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.term, PID: 902
java.lang.RuntimeException: Internal error in Firestore (0.6.6-dev).
at com.google.android.gms.internal.firebase-firestore.zzkj.run(Unknown Source:21)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7045)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/util/Function;
at com.google.android.gms.internal.firebase-firestore.zzfu.zzd(Unknown Source:0)
at com.google.android.gms.internal.firebase-firestore.zzeg.<init>(Unknown Source:5)
at com.google.android.gms.internal.firebase-firestore.zzcj.zza(Unknown Source:74)
at com.google.android.gms.internal.firebase-firestore.zzcl.run(Unknown Source:8)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:459)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at com.google.android.gms.internal.firebase-firestore.zzkg$zza.run(Unknown Source:16)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.util.Function" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/base.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_dependencies_apk.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_resources_apk.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_slice_0_apk.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_slice_1_apk.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_slice_2_apk.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_slice_3_apk.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_slice_4_apk.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_slice_5_apk.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_slice_6_apk.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_slice_7_apk.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_slice_8_apk.apk", zip file "/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/lib/arm64, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.google.android.gms.internal.firebase-firestore.zzfu.zzd(Unknown Source:0) 
at com.google.android.gms.internal.firebase-firestore.zzeg.<init>(Unknown Source:5) 
at com.google.android.gms.internal.firebase-firestore.zzcj.zza(Unknown Source:74) 
at com.google.android.gms.internal.firebase-firestore.zzcl.run(Unknown Source:8) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:459) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
at com.google.android.gms.internal.firebase-firestore.zzkg$zza.run(Unknown Source:16) 
at java.lang.Thread.run(Thread.java:764) 
Suppressed: java.io.IOException: No original dex files found for dex location (arm64) /data/app/com.example.term-kj_zrYeYg7nGbyiDIJMp4w==/split_lib_resources_apk.apk
at dalvik.system.DexFile.openDexFileNative(Native Method)
at dalvik.system.DexFile.openDexFile(DexFile.java:354)
at dalvik.system.DexFile.<init>(DexFile.java:101)
at dalvik.system.DexFile.<init>(DexFile.java:75)
at dalvik.system.DexPathList.loadDexFile(DexPathList.java:394)
at dalvik.system.DexPathList.makeDexElements(DexPathList.java:354)
at dalvik.system.DexPathList.<init>(DexPathList.java:164)
at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:74)
E/AndroidRuntime: at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:65)
at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:64)
at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:73)
at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:88)
at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:74)
at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:40)
at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:764)
at android.app.LoadedApk.getClassLoader(LoadedApk.java:847)
at android.app.LoadedApk.getResources(LoadedApk.java:1088)
at android.app.ContextImpl.createAppContext(ContextImpl.java:2563)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6095)
at android.app.ActivityThread.access$1200(ActivityThread.java:237)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1785)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7045)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
'''

最佳答案

异常说:

ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.Arrays

这与您具有此格式的两个语句相关:

(Arrays) Arrays.asList("안동찜닭", "콜라")

如果你查看错误消息,并到documentation ,您将看到 Arrays.asList 返回一个 List 而不是 Arrays

如果您确实需要,可以将结果转换为 ArrayList:

(ArrayList) Arrays.asList("안동찜닭", "콜라")

但我强烈建议不要这样做,只需删除 Actor 阵容即可。仅使用 List 就不太可能在将来出现问题:

Arrays.asList("안동찜닭", "콜라")

关于java - 想要访问 firebase cloud firestore 但存在运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55907674/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com