所以我将Android Studio更新为v3.2.当我尝试编译项目时,构建失败.以下是错误:
Android resource compilation failed
Output: C:\Users\Ashish\AndroidStudioProjects\StartUp\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:900: error: <item> inner element must either be a resource reference or empty.
Command: C:\Users\Ashish\.gradle\caches\transforms-1\files-1.1\aapt2-3.2.0-4818971-windows.jar\7f1fbe9171e916e5044000cd76b749c8\aapt2-3.2.0-4818971-windows\aapt2.exe compile --legacy \
-o \
C:\Users\Ashish\AndroidStudioProjects\StartUp\app\build\intermediates\res\merged\debug \
C:\Users\Ashish\AndroidStudioProjects\StartUp\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml
Daemon: AAPT2 aapt2-3.2.0-4818971-windows Daemon #0
Run Code Online (Sandbox Code Playgroud)
请告诉我们是否还需要更多信息.任何帮助将不胜感激.
我希望用户键入他们的电子邮件和密码。身份验证后,我想根据他们的电子邮件检查他们是否为管理员,然后打开其他活动。我应该如何执行搜索查询?可能吗?
以下是对我有用的答案。有关一般情况,请参见亚历克斯回答。
mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
rootRef.collection("Users").whereEqualTo("Email","ashish@gmail.com").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
if (document.getString("Admin").equals("Yes")) {
Toast.makeText(Login.this, "Logged In!", Toast.LENGTH_LONG).show();
finish();
startActivity(new Intent(Login.this, MainActivity.class));
} else {
Toast.makeText(Login.this, "Logged In!", Toast.LENGTH_LONG).show();
finish();
startActivity(new Intent(Login.this, nonadmin.class));
}
}
} else {
mProgressBar.setVisibility(View.GONE);
Toast.makeText(Login.this, "Sign In Problem", Toast.LENGTH_LONG).show();
}
}
});
}
}
});
Run Code Online (Sandbox Code Playgroud) 假设我有一个文件。我知道它的ID. 现在我想知道该文档中是否存在特定字段。如果没有,我想创建它。是否可以?
PS:我不想将字段名称与我自己的名称放在一起并将该值作为null.
下面是我用来在recyclerview中检索文档数据的代码。工作正常。但是,无论何时添加新文档,它都不会实时更新。我知道快照侦听器仅用于此目的,但很难使其工作。任何帮助将不胜感激。:)
mFirestore.collection("Users").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
for (DocumentSnapshot document : task.getResult()) {
Message message = document.toObject(Message.class);
messageList.add(message);
mAdapter.notifyDataSetChanged();
}
}
}
});
Run Code Online (Sandbox Code Playgroud) 好的,所以我想知道onChildRemovedFirebase Realtime Databse中的工作原理。用户添加数据后,即可以实时添加数据。但是当用户删除数据时,我想做同样的事情。如何进行呢?我阅读了文档,但无法获取。
任何帮助将不胜感激。
PS:我可以删除数据,mRootRef.child("message").removeValue();
但是我必须返回并再次参加此活动以查看更改。
private void loadmessage(String class_id, String email_red) {
messageQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Message message = dataSnapshot.getValue(Message.class);
messageList.add(message);
mAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
//what to add here??
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
Run Code Online (Sandbox Code Playgroud)