我有两个活动

第一个从内容提供商那里获取一些数据,并显示它

第二个活动有一个按钮,当单击时,它应该将第一个活动称为“刷新”,换句话说,以从内容提供商中重新加载数据

这是我的第一个活动

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

    }

这是实施此类功能的正确方法吗?感觉不正确,但我无法确定任何备份我的主张的理由

有帮助吗?

解决方案

这取决于您要寻找的行为。正如您当前已实施的那样,在将其显示给用户时,第一个活动将刷新。例如,如果用户从第一个活动按下主按钮,然后通过长按Home返回第一个活动,则第一个活动将刷新其数据。

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

如果您只想在第二个活动上按“刷新”按钮时进行第一个活动刷新,那么您需要使用意图来做到这一点。一种方法是为您的意图增加布尔值:

i.putExtra("reloadContent", true);

然后在Onstart Menthod中检查此额外。

其他提示

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

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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top