【问题标题】:Android; How can I initialise state in one activity, then have another refresh that?安卓;如何在一个活动中初始化状态,然后再刷新一次?
【发布时间】:2010-09-20 11:02:23
【问题描述】:

我有两个活动

第一个从内容提供者那里获取一些数据,并显示出来

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

这是我的第一个活动

...
    @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);

    }

这是实现此类功能的正确方法吗?感觉不正确,但我无法确定任何理由来支持我的声明

【问题讨论】:

    标签: android android-2.2-froyo android-lifecycle


    【解决方案1】:

    你可以通过为你的意图设置标志来做到这一点 尝试如下,通过其他标志

    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);
    

    【讨论】:

      【解决方案2】:

      这取决于您要寻找的行为。正如您当前实现的那样,第一个 Activity 将在任何时候向用户显示时刷新。例如,如果用户从第一个活动中按下主页按钮,然后通过长按主页返回到第一个活动,那么第一个活动将刷新它的数据。

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

      如果您只希望在第二个 Activity 上按下刷新按钮时刷新第一个 Activity,那么您需要使用 Intent 来执行此操作。一种方法是在 Intent 中添加一个额外的布尔值:

      i.putExtra("reloadContent", true);
      

      然后在 onStart 方法中检查这个额外的内容。

      【讨论】:

      • 因此,您在意图上设置了一个选项,然后在 onStart 方法中检查该选项,如果为真,则执行某些操作。这是 Google 打算让我们刷新事物的方式还是有其他方式?谢谢
      • 是的,没错。我不是 100% 确定是否是“正确”的做事方式,但我怀疑它是。意图的常见预期用途之一是更新已下载/可用新数据的活动,所以我猜测这种用法也是正确的。一般来说,如果某件事有效且合乎逻辑,那么它就是正确的。
      猜你喜欢
      • 2014-03-11
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      相关资源
      最近更新 更多