我的代码在我的populateViewHolder:
public void populateViewHolder(final CampaignHolder viewHolder, final Campaign campaign, final int position) {
String k = getRef(position).getKey();
ref.child(k).child("users").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!dataSnapshot.hasChild(getUid())) {
//Something...
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//...Populating the viewholder...
Run Code Online (Sandbox Code Playgroud)
我想删除该项,如果!dataSnapshot.hasChild(getUid())是true,否则只是继续正常填充ViewHolder.请注意,我不想从数据库中删除该项目,我只想让它从中删除FirebaseRecyclerAdapter.有什么方法可以做到这一点?
编辑:我仍然在寻找这个问题的解决方案,因为它还没有修复.我的解决方案非常气馁,非常糟糕的做法,我已经重新考虑过自己使用它.
我试图在ubuntu 14.04的android Studio中的模拟器中启动应用程序,它显示以下错误.
/ home/next/NTE/MachineSetup/android-sdk-linux/tools/emulator -netdelay none -netspeed full -avd Nexus_5X_API_24无法启动'/ home/next/NTE/MachineSetup/android-sdk-linux/tools/qemu/linux-x86/qemu-system-x86_64':没有这样的文件或目录
12/02 16:47:57:在等待设备时启动应用程序错误:AVD Nexus_5X_API_24的模拟器进程被终止.
我附上了截图供您参考.
我正在使用这个:
FileInputStream serviceAccount;
try {
serviceAccount = new FileInputStream("firebase_key.json");
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
return;
}
System.out.println("Reached here!");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
.setDatabaseUrl("https://*.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
Run Code Online (Sandbox Code Playgroud)
但是,应用程序崩溃了 java.lang.NoClassDefFoundError for FirebaseOptions$Builder
我的build.gradle:
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile 'com.google.firebase:firebase-admin:4.1.1'
}
Run Code Online (Sandbox Code Playgroud)
我正在使用IntelliJ.
logcat的:
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/firebase/FirebaseOptions$Builder
10:57:43 AM web.1 | at com.x.*.TokenGenerator.main(TokenGenerator.java:26)
10:57:43 AM web.1 | Caused by: java.lang.ClassNotFoundException: com.google.firebase.FirebaseOptions$Builder
10:57:43 AM web.1 | at java.net.URLClassLoader.findClass(Unknown Source)
10:57:43 AM web.1 | …Run Code Online (Sandbox Code Playgroud) 我有我的主要课程:
public class Main {
public static void main(String[] args){
Spark.port(getHerokuAssignedPort());
get("/hello", (req, res) -> "Hello Heroku World");
}
private static int getHerokuAssignedPort() {
ProcessBuilder processBuilder = new ProcessBuilder();
if (processBuilder.environment().get("PORT") != null) {
return Integer.parseInt(processBuilder.environment().get("PORT"));
}
return 4567; //return default port if heroku-port isn't set (i.e. on localhost)
}
}
Run Code Online (Sandbox Code Playgroud)
我的procfile:
web: java -jar build/libs/CrowdSubhaHeroku-1.0-SNAPSHOT-all.jar
Run Code Online (Sandbox Code Playgroud)
注意:我正在使用shadowJar,因为正常的jar创建不包含我需要的依赖项,例如Spark和Firebase.
现在,如果我这样做:
heroku local web
Run Code Online (Sandbox Code Playgroud)
然后去localhost:5000,我得到404错误.但是,应用程序实际上并没有崩溃.它一直在运行.
这与我不同:
heroku open
Run Code Online (Sandbox Code Playgroud)
之后git add .,git commit -m "x"和git push …
我在xml文件中创建按钮,如下所示:
<Button
android:id="@+id/call_button"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="30dp"
android:background="@drawable/button"
android:layout_weight="40"
android:drawableLeft="@drawable/symbol_phone"
android:paddingLeft="20dp"
android:drawablePadding="-25dp"
android:text="Call"
android:textColor="@color/white"
/>
Run Code Online (Sandbox Code Playgroud)
我想知道如何在活动中做drawableLeft.我知道这很愚蠢,但我需要在活动中这样做,因为我在那里创建了按钮.我如何在活动中的xml文件中执行相同的操作?我需要添加drawableLeft和drawable padding以及padding left.这就是我在活动中创建按钮的方式
Button button1 = new Button(this);
button1.setLayoutParams(new RelativeLayout.LayoutParams(buttonWidth, buttonHeight));
button1.setText(systemTexts.getShowCallButton());
button1.setBackgroundDrawable(new
button1.setTextColor(Color.parseColor(buttonTextColor));
Run Code Online (Sandbox Code Playgroud) 所以我想出了如何正确地与Google签约.凉.现在,Facebook呢?
当我在登录Facebook时出现错误,例如错误表明我已经拥有具有相同凭据但具有不同社交提供商的Firebase帐户时,我会收到"退出Facebook"按钮.更清楚:
我尝试登录Facebook,然后我收到错误(这不是我的问题!),但问题是,Facebook的按钮现在处于"退出"状态.当它应该仍然是"请用facebook".我知道为什么会这样; 这是因为错误与Firebase有关,Facebook认为我已登录.
但真正的问题是,我如何正确退出Facebook?FirebaseAuth.getInstance().signout()似乎没有注销Facebook本身.
这是我目前的logout()方法:
static void logOut(final Context context) {
new SweetAlertDialog(context, SweetAlertDialog.WARNING_TYPE)
.showCancelButton(true)
.setTitleText(context.getString(R.string.areYouSure))
.setContentText(context.getString(R.string.logoutMSG))
.setCancelText(context.getString(android.R.string.no))
.setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
sweetAlertDialog.dismiss();
}
})
.setConfirmText(context.getString(R.string.yes))
.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(final SweetAlertDialog sweetAlertDialog) {
//region Google
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(context.getString(R.string.default_web_client_id))
.requestEmail()
.build();
final GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(context)
.enableAutoManage((FragmentActivity) context, new GoogleApiClient.OnConnectionFailedListener() {
@Override …Run Code Online (Sandbox Code Playgroud) 所以,我在开发控制台中启用了电子邮件/密码,一切正常.除了我应该收到我输入的电子邮件的确认电子邮件,但我没有得到它.我认为它会自动完成,但显然它没有.
注册方法:
public void signUp(View v) {
String email = emailET.getText().toString();
String password = passwordET.getText().toString();
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d("AD", "createUserWithEmail: " + task.isSuccessful() + task.getException());
if (!task.isSuccessful()) {
createDialogSignUpError(
getApplicationContext().getResources().getString(R.string.signUpFailedET),
getApplicationContext().getResources().getString(R.string.signUpFailedEM),
getApplicationContext().getResources().getString(android.R.string.ok));
Toast.makeText(SignUp.this, task.getException().toString(), Toast.LENGTH_LONG).show();
} else if (task.isSuccessful()) {
Toast.makeText(SignUp.this, "Registration Successful.", Toast.LENGTH_SHORT).show();
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
它应该是发送,但遗憾的是它不是.我已经在SO上找到了你需要添加一个方法或者某些东西来发送电子邮件,而且它在文档中缺失,但那不是Java.
编辑
根据这里,它仅在iOS和Web中受支持.这是非常令人惊讶的,因为毕竟android是谷歌,谷歌是Firebase.即使创建自定义发送的电子邮件,它也可以吗?
编辑2:更清楚的是,Android是否有像C#这样的电子邮件发件人.如果没有这方面的API,这将是最好的解决方案.
我在这篇文章中尝试了一切:Android RTL密码字段?
但没有任何帮助我.
问题:当用户的语言环境是阿拉伯语(RTL)时,我希望他在用他的语言输入密码时感觉很舒服.但是,当我分配inputType时textPassword,无论我分配什么,它都不起作用并强制它进入LTR.
我试过分配gravity,textAlignment,layoutDirection,我甚至已经尝试过编程,但没有什么工作.
除了PASSWORD之外,所有其他文本字段都可以正常工作.这个错误/问题有解决方法吗?
如果我有一个包含8个空格的行(是的,空格,而不是制表符)和一些文字......
x=3;
Run Code Online (Sandbox Code Playgroud)
... ...我的光标放在分号后面,当我点击Enter键时,它将光标定位在x下面.换句话说,它将它缩进8个位置.如果我然后按退格键,则将光标定位在分号后面!我希望退格会让我回到新线上的1个空间.
在编辑器>代码样式> Java,Tab大小= 1,Indent = 0,Continuation indent = 0.请注意,如果我尝试将Tab大小设置为0,那么下次我打开该对话框时会为1,因此,即使我在几个SO问题中看到它,也显然不能接受0.
在编辑器>代码样式 I UNchecked 检测并使用现有的文件缩进进行编辑,现在如果我在分号后用光标按Enter键,它将光标定位在右边的4个空格中,换句话说它仍然缩进,只是没有那么多.
注意,在进行这些设置后,我做了一个File> Invalidate Caches/Restart.
我不想要任何自动缩进.当我按Enter键时,我希望它将光标定位在新行的第一个位置,当我按下退格键时,我希望它返回1个位置,就像普通的"哑"编辑器一样.如何在Android Studio中关闭所有自动缩进功能?
所以,我有一个toolbar.xml文件:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"/>
Run Code Online (Sandbox Code Playgroud)
而且,我的<include...布局中有一个标签:
<include
layout="@layout/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/toolbar"/>
Run Code Online (Sandbox Code Playgroud)
所以我听说如果我想把活动的标题集中在上面toolbar,我只需要TextVIew在工具栏中添加一个,如下所示:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbarLL"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary">
<TextView .../>
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)
但是,我正在使用include标签,文本显然没有出现:
<include
layout="@layout/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/toolbar">
<TextView
android:text="@string/createNewOccasion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView5"
android:textSize="18sp"
android:fontFamily="sans-serif-condensed"
android:gravity="center"
/>
</include>
Run Code Online (Sandbox Code Playgroud)
如果你想看到我完整的真实布局,请转到此处.无论如何,这是我的活动:http://pastebin.com/g6ZXAxe5