Process: com.topurayhan.chatter, PID: 7960
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.topurayhan.chatter/com.topurayhan.chatter.CategoriesActivity}: com.google.firebase.database.DatabaseException: Found conflicting getters for name: isFocusable
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: com.google.firebase.database.DatabaseException: Found conflicting getters for name: isFocusable
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.<init>(CustomClassMapper.java:478)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.loadOrCreateBeanMapperForClass(CustomClassMapper.java:330)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.serialize(CustomClassMapper.java:167)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToPlainJavaTypes(CustomClassMapper.java:61)
at com.google.firebase.database.DatabaseReference.setValueInternal(DatabaseReference.java:282)
at com.google.firebase.database.DatabaseReference.setValue(DatabaseReference.java:159)
at com.topurayhan.chatter.CategoriesActivity.onCreate(CategoriesActivity.java:236)
at android.app.Activity.performCreate(Activity.java:7994)
at android.app.Activity.performCreate(Activity.java:7978)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I have this in my logcat, after trying to save the task onto the user’s account with this code
package com.topurayhan.chatter;
import static android.content.ContentValues.TAG;
import static com.topurayhan.chatter.R.drawable.avatar;
import static com.topurayhan.chatter.R.drawable.circle1;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.cardview.widget.CardView;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms. tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot;
import com.squareup.picasso.Picasso;
import com.topurayhan.chatter.Hobbies.Hobbies_Categories;
import com.topurayhan.chatter.Home.Home_Categories;
import com.topurayhan.chatter.Lifestyle.Lifestyle_Categories;
import com.topurayhan.chatter.Schools.School_Categories;
import com.topurayhan.chatter.databinding.ActivityCategoriesBinding;
import com.topurayhan.chatter.databinding.ActivitySettingsBinding;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import de.hdodenhof.circleimageview.CircleImageView;
public class CategoriesActivity extends AppCompatActivity {
ActivityCategoriesBinding binding;
FirebaseDatabase database;
CircleImageView avatar;
TextView username, emailDisplay;
String userId;
FirebaseAuth auth;
FirebaseFirestore db;
List<DataClass_Task> dataList;
RecyclerView recyclerView;
DatabaseReference databaseReference;
ValueEventListener eventListener;
MyAdapter adapter;
LinearLayout settings, watch, mail, calendar;
List<DataClass_Task> taskList = new ArrayList<>();
MyAdapter myAdapter;
ArrayList<User> users;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityCategoriesBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
settings = findViewById(R.id.settingsButton);
watch = findViewById(R.id.watchActivity);
mail = findViewById(R.id.chatsButton);
calendar = findViewById(R.id.calendarActivity);
ImageButton addTaskBtn = findViewById(R.id.addTaskBtn);
addTaskBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(CategoriesActivity.this, Task.class);
startActivity(intent);
}
});
watch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(CategoriesActivity.this, Watch.class);
startActivity(intent);
}
});
settings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
}
});
mail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), HomeActivity.class));
}
});
calendar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), Calendar.class));
}
});
CardView schoolCategories = findViewById(R.id.schoolCategories);
CardView homeCategories = findViewById(R.id.homeCategories);
CardView lifestyleCategories = findViewById(R.id.lifestyleCategories);
CardView hobbiesCategories = findViewById(R.id.hobbiesCategories);
schoolCategories.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), School_Categories.class));
}
});
homeCategories.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), Home_Categories.class));
}
});
lifestyleCategories.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), Lifestyle_Categories.class));
}
});
hobbiesCategories.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), Hobbies_Categories.class));
}
});
username = findViewById(R.id.username);
avatar = findViewById(R.id.profileImage);
emailDisplay = findViewById(R.id.emailDisplay);
recyclerView = findViewById(R.id.recyclerView);
androidx.appcompat.widget.SearchView searchView = findViewById(R.id.search);
auth = FirebaseAuth.getInstance();
db = FirebaseFirestore.getInstance();
database = FirebaseDatabase.getInstance();
FirebaseUser currentUser = auth.getCurrentUser();
userId = auth.getCurrentUser().getUid();
searchView.clearFocus();
GridLayoutManager gridLayoutManager = new GridLayoutManager(CategoriesActivity.this,1);
recyclerView.setLayoutManager(gridLayoutManager);
AlertDialog.Builder builder = new AlertDialog.Builder(CategoriesActivity.this);
builder.setCancelable(false);
builder.setView(R.layout.progress_layout);
AlertDialog dialog = builder.create();
dialog.show();
dataList = new ArrayList<>();
adapter = new MyAdapter(getApplicationContext(), dataList);
recyclerView.setAdapter(adapter);
databaseReference = FirebaseDatabase.getInstance().getReference("Tasks");
dialog.show();
eventListener = databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
dataList.clear();
for(DataSnapshot itemSnapshot : snapshot.getChildren()) {
DataClass_Task dataClassTask = itemSnapshot.getValue(DataClass_Task.class);
dataClassTask.setKey(itemSnapshot.getKey());
dataList.add(dataClassTask);
}
adapter.notifyDataSetChanged();
dialog.dismiss();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
dialog.dismiss();
}
});
DatabaseReference tasksRef = database.getReference("Tasks");
// Generate a unique task ID
String taskId = tasksRef.child("Tasks").push().getKey();
// Now add the task under the "Tasks" node
String tskId = database.getReference().child("users").child(auth.getUid()).child("Tasks").push().getKey();
DataClass_Task task = new DataClass_Task();
task.setTaskId(taskId);
task.setKey("key");
task.setDataTitle("Task Name");
task.setDataDesc("Task Description");
task.setDataDue("Task Due");
database.getReference().child("users").child(auth.getUid()).child("Tasks").child(taskId).setValue(recyclerView)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
// Task saved successfully
Log.d(TAG, "Task saved successfully!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Failed to save task
Log.e(TAG, "Failed to save task: " + e.getMessage());
}
});
database.getReference().child("users").child(auth.getUid()).child("profileImage").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()){
String profileImage = snapshot.getValue(String.class);
Picasso.get().load(profileImage).into(binding.profileImage);
//binding.profilePic.setImageURI(Uri.parse(profileImage));
}
else {
@SuppressLint("UseCompatLoadingForDrawables") Drawable d = getResources().getDrawable(circle1);
binding.profileImage.setImageDrawable(d);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
searchView.setOnQueryTextListener(new androidx.appcompat.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
searchList(newText);
return true;
}
});
avatar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), UserInfo.class));
}
});
}
public void searchList(String text) {
ArrayList<DataClass_Task> searchList = new ArrayList<>();
for(DataClass_Task dataClassTask: dataList) {
if(dataClassTask.getDataTitle().toLowerCase().contains(text.toLowerCase())) {
searchList.add(dataClassTask);
}
}
adapter.searchDataList(searchList);
}
}
I was expecting the code to work but it shows the error that I have provided in the logcat. But these are the code for the getters.
package com.topurayhan.chatter;
import com.google.firebase.database.Exclude;
public class DataClass_Task {
public String dataTitle;
public String dataDesc;
public String dataDue;
public void setDataTitle(String dataTitle) {
this.dataTitle = dataTitle;
}
public void setDataDesc(String dataDesc) {
this.dataDesc = dataDesc;
}
public void setDataDue(String dataDue) {
this.dataDue = dataDue;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
public DataClass_Task(String taskId) {
this.taskId = taskId;
}
@Exclude
public String getTaskId() {
return taskId;
}
public String taskId;
@Exclude
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String key;
@Exclude
public String getDataTitle() {
return dataTitle;
}
@Exclude
public String getDataDesc() {
return dataDesc;
}
@Exclude
public String getDataDue() {
return dataDue;
}
public DataClass_Task(String dataTitle, String dataDesc, String dataDue) {
this.dataTitle = dataTitle;
this.dataDesc = dataDesc;
this.dataDue = dataDue;
}
public void task(String dataTitle, String dataDesc, String dataDue, String taskId, String key) {
this.dataTitle = dataTitle;
this.dataDesc = dataDesc;
this.dataDue = dataDue;
this.taskId = taskId;
this.key = key;
}
public DataClass_Task() {}
}
What should I do? Please help.
I want to get the task’s data and align it with the user’s account so each user has a customized tasks within their accounts.
New contributor
Divine Garduque is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.