保存按钮状态android

保存按钮状态android,android,button,click,state,Android,Button,Click,State,我正在制作一个具有书签功能的新闻应用程序。当用户单击书签按钮时,图像将被更改,书签将被保存,再次单击会删除书签。但当我转到其他活动,然后返回到主新闻页时,书签按钮图像再次更改为默认图像 按钮无法保留状态 我也尝试了触控,但没有成功 newsHolder.bookmark.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {

我正在制作一个具有书签功能的新闻应用程序。当用户单击书签按钮时,图像将被更改,书签将被保存,再次单击会删除书签。但当我转到其他活动,然后返回到主新闻页时,书签按钮图像再次更改为默认图像

按钮无法保留状态

我也尝试了触控,但没有成功

newsHolder.bookmark.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!isBookmarked) {
                    isBookmarked = true;
                    newsHolder.bookmark.setBackgroundResource(R.drawable.ic_bookmark);
                    newsObject.setTitle(currentNews.getmTitle());
                    newsObject.setDescription(currentNews.getmDescription());
                    newsObject.setDate(currentNews.getmPublishedAt());
                    newsObject.setPoweredBy(poweredby);
                    newsObject.setImageUrl(currentNews.getmUrlToImage());
                    newsObject.setSource(currentNews.getmSource());
                    newsObject.setUrl(currentNews.getmUrl());

                    newsDbHelper.addNews(newsObject);
                    newsHolder.bookmark.setPressed(true);
                    Toast.makeText(activity, "Bookmark Added", Toast.LENGTH_SHORT).show();
                }
                else
                {

                    newsHolder.bookmark.setPressed(false);
                    newsDbHelper.deleteBookmark(currentNews.getmUrl());
                    isBookmarked = false ;
                    newsHolder.bookmark.setBackgroundResource(R.drawable.ic_add_bookmark);



                    Toast.makeText(activity, "Bookmark Removed", Toast.LENGTH_SHORT).show();
            }

你应该将你的书签文章保存在一些永久性存储Prefs/BD/Cloud中,并在启动屏幕时检查它是否已被书签,并根据它更改按钮的状态。

你有两个选项可以做到这一点,一个是保存服务器上每个项目的图书标记状态,默认情况下,它应该为false,然后单击它,更新值

但我猜您是通过第三方服务器获取这些新闻,可能是某个新闻频道的RSS提要,您不是从自己的服务器获取这些新闻,所以您无法在服务器上进行更改


我可以向您建议的最佳解决方案是,您应该创建一个本地数据库,在该数据库中,您将根据特定项目的id保存书签的状态(来自新闻服务器的每个新闻项目必须有一个唯一的id)。之后,您将从服务器设置新闻,但您将检查本地数据库中每个项目的book mark状态。当用户与book mark按钮交互时,您将根据数据库中相应位置上的特定id进行更改

所以,检查DB中的特定ID,如果它在DB中,则“使按钮看起来像书签”看到当我单击按钮时,图像成功更改为书签图像,并保存在数据库中。我有一个家庭活动的浏览页面。当我转到其他页面并返回到上一页时,图像会被更改回添加书签。更新您的问题并在您检查的地方显示代码state@ParasWatts您应该在片段的onResume回调中检查数据库中的特定书签