代码之家  ›  专栏  ›  技术社区  ›  Jimmy

我如何在一个活动中初始化状态,然后再刷新它?

  •  2
  • Jimmy  · 技术社区  · 14 年前

    第二个活动有一个按钮,当单击它时,它应该调用第一个活动来“刷新”,换句话说,从内容提供者重新加载数据

    这是我的第一个活动

    ...
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
             setContentView(R.layout.contactsview);
                // Grab data and put it onto screen
                    getDataAndPutToUI();
        }
    
        @Override
        public void onStart()
        {
           //Refresh data
               getDataAndPutToUI();
        }
    ...
    

    这是我的第二项活动

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.optionsview);
    
            Button button = (Button) findViewById(R.id.intentButton);
                button.setOnClickListener(this);
    
        }   
    
        // This is bound to the "refresh" button
        @Override
        public void onClick(View v) {
            // Call first activity, to reload the contacts
            Intent i = new Intent(this, FirstActivity.class);
            startActivity(i);
    
        }
    

    这是实现这种功能的正确方法吗?这感觉不正确,但我不能确定任何理由来支持我的主张

    2 回复  |  直到 6 年前
        1
  •  1
  •   Computerish    14 年前

    这取决于你在寻找什么样的行为。由于您当前已经实现了它,第一个活动将在向用户显示时随时刷新。例如,如果用户在第一个活动中按下home按钮,然后通过长按home返回到第一个活动,那么第一个活动将刷新其数据。

    如果那是你想要的,那你就做对了。

    如果只希望在按下第二个活动上的“刷新”按钮时刷新第一个活动,则需要使用您的意图。一种方法是在您的意图中添加一个布尔值:

    i.putExtra("reloadContent", true);
    

        2
  •  4
  •   Senthil Mg    14 年前

    我可以为你的意图设置标志

    Intent i = new Intent();
                                i.setClass(this, Rss_Feed.class);
    //                          i.setClass(Rss_Feed.this, Bru_Maps.class);
                                i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);