【问题标题】:Keep changes in activity even after closing it即使在关闭活动后也保持活动的变化
【发布时间】:2016-02-18 12:53:48
【问题描述】:

我有一个列表视图,当单击列表项时会打开一个新的单视图活动

singleitenm 视图包含一个按钮,用于将相应的列表项添加到收藏夹活动(如果尚未添加),并将按钮颜色更改为黄色,表示它已添加到收藏夹中,否则为灰色,如果不在收藏夹中

到这里一切正常,但如果我关闭 singleitemview 并重新打开它,按钮颜色会变回以前的颜色,但仍处于收藏夹中

按钮颜色没有变怎么办

singleitemview 活动的收藏夹

final Button btn = (Button) findViewById(R.id.singleitemButton1);
    btn.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v){
            products=new ArrayList<Product>();
            Bundle extras = getIntent().getExtras();

            String jsonObj = extras.getString("selected item");


            ObjectMapper mapper = new ObjectMapper();

            try
            {
                Product pro = mapper.readValue(jsonObj, Product.class);

                if (checkFavoriteItem(pro)) {

                    sharedPreference.removeFavorite(SingleItemView.this, pro);

                btn.setBackgroundColor(Color.GRAY);
                    Toast.makeText(SingleItemView.this,
                                   SingleItemView.this.getResources().getString(R.string.remove_favr),
                                   Toast.LENGTH_SHORT).show();


                } else {
                    sharedPreference.addFavorite(SingleItemView.this, pro);
                    Toast.makeText(SingleItemView.this,
                                   SingleItemView.this.getResources().getString(R.string.add_favr),
                                   Toast.LENGTH_SHORT).show();
                        btn.setBackgroundColor(Color.YELLOW);

                }
            }
            catch (IOException e)
            {};





        });

onitemclick 我的列表活动

public void onItemClick(AdapterView<?> parent, View view, int position,
                        long id) {

                            ObjectMapper mapper = new ObjectMapper();
                            Product pro = productListAdapter.getItem(position);

                            String favimg = ((ImageView) view.findViewById(R.id.imgbtn_favorite)).toString();

    try
    {
        String hi = "this is testint";


        String jsonInString = mapper.writeValueAsString(pro);

        Intent intent = new Intent(activity.getApplicationContext(), SingleItemView.class);
        intent.putExtra("selected item", jsonInString);


        ;

        startActivityForResult(intent, 1);
    //  startActivity(intent);
    }
    catch (JsonProcessingException e)
    {}  



}

【问题讨论】:

    标签: android listview button android-activity


    【解决方案1】:

    在您的 singleitemview 活动的 onCreate() 方法中,在您为具有收藏夹按钮的视图充气后,您只需检查该项目是否在收藏夹中并相应地设置按钮的背景颜色。

    【讨论】:

    • Checkfavoriteitem() 检查它是否在收藏夹中
    • 您是在 onCreate() 或 onResume() 中调用 checkFavoriteItem(),还是仅在 onClickListener() 中调用?当您恢复应用程序时,您需要遍历所有列表项并设置背景颜色...
    • 无论在哪里膨胀/创建按钮,请检查确定背景颜色的条件并进行相应设置。如果你在onClickListener()做的话,当你返回活动时它不会持续存在。
    猜你喜欢
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多