安卓;我如何在一项活动中初始化状态,然后再刷新呢?
-
04-10-2019 - |
题
我有两个活动
第一个从内容提供商那里获取一些数据,并显示它
第二个活动有一个按钮,当单击时,它应该将第一个活动称为“刷新”,换句话说,以从内容提供商中重新加载数据
这是我的第一个活动
...
@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);
不隶属于 StackOverflow