ログイン情報で 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
この問題を修正するにはどうすればよいですか?
ありがとうルーン