0

ログイン情報で IF を使用しようとしています。これの目的は、ユーザーが存在しない場合はfirebaseに作成し、存在する場合はログインすることです。これを行う理由は、ユーザーの UID の下にさらに情報を入れたいからですが、この情報はユーザーがログインするたびに firebase から消去されます。これは、UID とその下のエントリが常に更新されるためです。

これを行う別の方法があるかもしれませんが、これが私が見つけることができた唯一の解決策です。

私が抱えている問題は、ビルド時にエラーが発生することです。以下のエラー メッセージを参照してください。

これは私の MainActivity.java にあります

@Override
public void onFirebaseLoggedIn(final AuthData authData) {
    // TODO: Handle successful login
    Firebase userRef= new Firebase("https://theatre-assistant.firebaseio.com/users");
    userRef.child(authData.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            if (snapshot.getValue() != null) {
                Intent intent = new Intent(this, HomeActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                startActivity(intent);

            } else {
                final Firebase ref = new Firebase("https://theatre-assistant.firebaseio.com/");
                // Authentication just completed successfully :)
                Map<String, String> map = new HashMap<>();
                map.put("provider", authData.getProvider());
                if (authData.getProviderData().containsKey("displayName")) {
                    map.put("displayName", authData.getProviderData().get("displayName").toString());
                    map.put("profileImageURL", authData.getProviderData().get("profileImageURL").toString());

                }
                ref.child("users").child(authData.getUid()).setValue(map);
                Intent intent = new Intent(this, HomeActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                startActivity(intent);

            }
        }

        @Override
        public void onCancelled(FirebaseError arg0) {
        }
    });

}

ビルド時のエラー

Users/runelangaard/AndroidStudioProjects/TheatreAssistant/app/src/main/java/com/langaard/theatreassistant/MainActivity.java:61: error: no suitable constructor found for Intent(<anonymous ValueEventListener>,Class<HomeActivity>)
                    Intent intent = new Intent(this, HomeActivity.class);
                                    ^
    constructor Intent.Intent(String,Uri,Context,Class<?>) is not applicable
      (actual and formal argument lists differ in length)
    constructor Intent.Intent(Context,Class<?>) is not applicable
      (actual argument <anonymous ValueEventListener> cannot be converted to Context by method invocation conversion)
    constructor Intent.Intent(String,Uri) is not applicable
      (actual argument <anonymous ValueEventListener> cannot be converted to String by method invocation conversion)
    constructor Intent.Intent(String) is not applicable
      (actual and formal argument lists differ in length)
    constructor Intent.Intent(Intent) is not applicable
      (actual and formal argument lists differ in length)
    constructor Intent.Intent() is not applicable
      (actual and formal argument lists differ in length)
/Users/runelangaard/AndroidStudioProjects/TheatreAssistant/app/src/main/java/com/langaard/theatreassistant/MainActivity.java:77: error: no suitable constructor found for Intent(<anonymous ValueEventListener>,Class<HomeActivity>)
                    Intent intent = new Intent(this, HomeActivity.class);
                                    ^
    constructor Intent.Intent(String,Uri,Context,Class<?>) is not applicable
      (actual and formal argument lists differ in length)
    constructor Intent.Intent(Context,Class<?>) is not applicable
      (actual argument <anonymous ValueEventListener> cannot be converted to Context by method invocation conversion)
    constructor Intent.Intent(String,Uri) is not applicable
      (actual argument <anonymous ValueEventListener> cannot be converted to String by method invocation conversion)
    constructor Intent.Intent(String) is not applicable
      (actual and formal argument lists differ in length)
    constructor Intent.Intent(Intent) is not applicable
      (actual and formal argument lists differ in length)
    constructor Intent.Intent() is not applicable
      (actual and formal argument lists differ in length)
2 errors

 FAILED

この問題を修正するにはどうすればよいですか?

ありがとうルーン

4

1 に答える 1

2

交換

Intent intent = new Intent(this, HomeActivity.class);

Intent intent = new Intent(MainActivity.this, HomeActivity.class);
于 2016-04-01T12:51:46.767 に答える