我有两项活动
第一个从内容提供商处获取一些数据并显示它
第二个活动有一个按钮,点击它时应该调用第一个活动“刷新”,换句话说就是从内容提供者重新加载数据
这是我的第一个活动
...
@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);
}
这是实现此类功能的正确方法吗?感觉不正确,但我无法确定任何理由来备份我的声明
答案 0 :(得分:4)
我可以通过为你的意图设置标志来做到这一点 尝试如下,通过其他标志
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);
答案 1 :(得分:1)
这取决于您正在寻找的行为。正如您当前实现的那样,第一个Activity将在向用户显示的任何时候刷新。例如,如果用户从第一个活动按下主页按钮,然后通过长按主页返回到第一个活动,则第一个活动将刷新它的数据。
如果那就是你想要的,那么你就是这样做的。
如果您只想在第二个活动上按下刷新按钮时刷新第一个活动,那么您需要使用您的Intent来执行此操作。一种方法是为你的Intent添加一个布尔额外:
i.putExtra("reloadContent", true);
然后在onStart menthod中检查这个额外的内容。