每当我执行一个事件时setupLike()
,onCreate
方法会被重复调用,并且其中的所有方法也会被调用。我也登录onCreate
打印一些东西,日志也被反复执行。
下面是onCreate
方法
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chef_recipe_detail);
mDemoSlider = findViewById(R.id.slider);
View view = findViewById(R.id.view_recipe);
view.setVisibility(View.VISIBLE);
View view2 = findViewById(R.id.view_recipe2);
view2.setVisibility(View.VISIBLE);
// Get post key from intent
cheeseKey = getIntent().getStringExtra(EXTRA_CHEESE_KEY);
if (cheeseKey == null) {
throw new IllegalArgumentException("Must pass EXTRA_POST_KEY");
}
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (firebaseUser != null) {
uid = firebaseUser.getUid();
}
// Initialize Firebase Auth and Database Reference
mDatabase = FirebaseDatabase.getInstance().getReference();
//Database ref for likes
likeQuery = FirebaseDatabase.getInstance().getReference().child
("Post").child("PostRecipe").child(cheeseKey).child("Likes").child(uid);
DatabaseReference mDatabaseRef = FirebaseDatabase.getInstance().
getReference().child("Post").child("PostRecipe").child(cheeseKey);
Log.e(TAG, "url" + mDatabaseRef.getRef());
LinearLayout openComment = findViewById(R.id.linear_open_comment);
openComment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Chef_RecipeDetails.this, Comment.class);
intent.putExtra(Comment.EXTRA_COMMENT_KEY, cheeseKey);
startActivity(intent);
}
});
count_like_textview = findViewById(R.id.like_textview);
favourite_button = findViewById(R.id.fab_like);
linear_favourite = findViewById(R.id.linear_love);
final Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
collapsingToolbar = findViewById(R.id.collapsing_toolbar);
profile_name = findViewById(R.id.profile_name);
food_name = findViewById(R.id.food_name);
food_tips = findViewById(R.id.food_tips);
final CircleImageView profile_photo = findViewById(R.id.profile_photo);
checkLike();
linear_favourite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setupLike();
}
});
//End of onCreate method
}
我使用下面的代码来执行类似的操作,并从Firebase数据库中获取数据
private void setupLike() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (likeEvent) {
//If food is disliked already, like it
unLikePerformed();
count_like();
} else {
//If food is liked already, disliked it
likePerformed();
count_like();
}
}
}
private void likePerformed() {
//Get food recipe_key as the its comment_id. For this, all comment have unique ID
//and this ID is the same as the Recipe commented on.
//Database ref for likes
Map<String, Object> userMap = new HashMap<>();
userMap.put("likes", uid);
userMap.put("recipe", cheeseKey);
likeQuery.updateChildren(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "likePerformed " + "like");
likeEvent = true;
favourite_button.setImageResource(R.drawable.favorite_red);
}
}
});
}
发布于 2018-06-08 20:54:44
你的unLikePerformed()
方法在哪里?在断点处放置onCreate()
并遵循调用堆栈。
https://stackoverflow.com/questions/-100005282
复制相似问题