小编Ab_*_*Ab_的帖子

如何从FirebaseRecyclerAdapter中排除项目

我的代码在我的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.有什么方法可以做到这一点?


编辑:我仍然在寻找这个问题的解决方案,因为它还没有修复.我的解决方案非常气馁,非常糟糕的做法,我已经重新考虑过自己使用它.

android firebase firebase-realtime-database firebaseui

8
推荐指数
1
解决办法
1412
查看次数

无法在Android Studio中启动模拟器

我试图在ubuntu 14.04的android Studio中的模拟器中启动应用程序,它显示以下错误.

  1. 当gradle构建正在进行时显示错误:

/ home/next/NTE/MachineSetup/android-sdk-linux/tools/emulator -netdelay none -n​​etspeed full -avd Nexus_5X_API_24无法启动'/ home/next/NTE/MachineSetup/android-sdk-linux/tools/qemu/linux-x86/qemu-system-x86_64':没有这样的文件或目录

  1. gradle构建完成后出现错误:

12/02 16:47:57:在等待设备时启动应用程序错误:AVD Nexus_5X_API_24的模拟器进程被终止.

我附上了截图供您参考.

在gradle构建期间出现错误

构建完成后出现错误

android android-emulator android-studio

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

Firebase管理员NoClassDefFoundError:FirebaseOptions $ Builder

我正在使用这个:

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)

android firebase firebase-authentication firebase-admin

8
推荐指数
1
解决办法
819
查看次数

Heroku Java应用程序在本地崩溃但不在网络上崩溃

我有我的主要课程:

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 …

java git heroku shadowjar

8
推荐指数
1
解决办法
395
查看次数

按钮和左侧可绘制

我在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)

android android-layout

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

如何使用Firebase在Android上正确退出Facebook?

所以我想出了如何正确地与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)

android facebook-login firebase firebase-authentication

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

如何在注册时发送Firebase电子邮件确认?

所以,我在开发控制台中启用了电子邮件/密码,一切正常.除了我应该收到我输入的电子邮件的确认电子邮件,但我没有得到它.我认为它会自动完成,但显然它没有.


注册方法:

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 firebase firebase-authentication

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

RTL密码字段Android

我在这篇文章中尝试了一切:Android RTL密码字段?

但没有任何帮助我.

问题:当用户的语言环境是阿拉伯语(RTL)时,我希望他在用他的语言输入密码时感觉很舒服.但是,当我分配inputTypetextPassword,无论我分配什么,它都不起作用并强制它进入LTR.

我试过分配gravity,textAlignment,layoutDirection,我甚至已经尝试过编程,但没有什么工作.

除了PASSWORD之外,所有其他文本字段都可以正常工作.这个错误/问题有解决方法吗?

android right-to-left

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

如何在Android Studio(2.1.1)中关闭Java中的自动缩进?(Windows 7的)

如果我有一个包含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中关闭所有自动缩进功能?

android-studio

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

当我使用<include>标签时,如何将TextView添加到工具栏?

所以,我有一个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

android android-layout android-toolbar

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