首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >执行操作时重复调用OnCreate方法应该怎么解决?

执行操作时重复调用OnCreate方法应该怎么解决?
EN

Stack Overflow用户
提问于 2018-06-08 11:14:47
回答 1查看 0关注 0票数 0

每当我执行一个事件时setupLike()onCreate方法会被重复调用,并且其中的所有方法也会被调用。我也登录onCreate打印一些东西,日志也被反复执行。

下面是onCreate方法

代码语言:javascript
复制
    @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();

代码语言:javascript
复制
    linear_favourite.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            setupLike();
        }
    });



    //End of onCreate method
}

我使用下面的代码来执行类似的操作,并从Firebase数据库中获取数据

代码语言:javascript
复制
   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);

            }
        }
    });

}
EN

回答 1

Stack Overflow用户

发布于 2018-06-08 20:54:44

你的unLikePerformed()方法在哪里?在断点处放置onCreate()并遵循调用堆栈。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档