Java 刷新活动内容或添加刷新按钮
例如,由于我可以刷新“活动”的内容,因此我有一个菜单和一个按钮,可以向我发送一个在线显示信息的应用程序内容,但要返回并再次返回,信息不会更新 这是我的活动Java 刷新活动内容或添加刷新按钮,java,android,refresh,Java,Android,Refresh,例如,由于我可以刷新“活动”的内容,因此我有一个菜单和一个按钮,可以向我发送一个在线显示信息的应用程序内容,但要返回并再次返回,信息不会更新 这是我的活动 public class Bovalpo extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act
public class Bovalpo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bovalpo);
Button buttonExit = (Button)this.findViewById(R.id.cerrar);
buttonExit.setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
System.exit(0);
}
}
);
TextView myListView = (TextView) findViewById(R.id.tv);
try {
myListView.setText(getPage());
if(getPage().contains("Abierto")){
myListView.setTextColor(Color.parseColor("#008000"));
}else{
myListView.setTextColor(Color.parseColor("#FF0000"));
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private String getPage() throws MalformedURLException, IOException {
HttpURLConnection con = (HttpURLConnection) new URL("http://www.bovalpo.com/cgi-local/xml_bcv.pl?URL=1").openConnection();
con.connect();
if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
return inputStreamToString(con.getInputStream());
} else {
return null;
}
}
private String inputStreamToString(InputStream in) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
StringBuilder stringBuilder = new StringBuilder();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append("Mercado: " + line + "\n");
}
bufferedReader.close();
return stringBuilder.toString();
}
public void lanzar(View view){
Intent i = new Intent(this, xml7009.class);
startActivity(i);
}
public void lanzar3(View view){
Intent i = new Intent(this, tabla7009.class);
startActivity(i);
}
public void lanzar4(View view){
Intent i = new Intent(this, xml6503.class);
startActivity(i);
}
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
}如果您想在每次参加“活动”时更新数据,则需要在onResume中设置更新后的值 如下
@Override
protected void onResume() {
super.onResume();
try {
myListView.setText(getPage());
if(getPage().contains("Abierto")){
myListView.setTextColor(Color.parseColor("#008000"));
}else{
myListView.setTextColor(Color.parseColor("#FF0000"));
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
如果希望每次显示“活动”时都运行,则获取数据并设置列表视图颜色的代码应放在
onResume()
中,而不是onCreate
。将代码放在此处
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
// make your work to data bind
}
只需将更新代码放入活动的方法中即可。当您从其他活动返回时,将调用OnResume()方法。 但是,例如,当您的活动是resume时,通常会调用onResume()方法。如果打开并关闭对话框,则活动将继续。因此,如果您在Resume上调用某些网络调用,那么它将消耗进程和网络速度 另一种解决方案是使用方法接收下一个活动的结果,并根据活动结果调用web API或任何工作。您可以在方法中获得下一个活动的结果。
但是在使用startActivityForResult方法之前,请确保下一个活动将通过调用方法来设置结果。
onResume()
比onStart()
更适合在用户每次根据返回时更新活动。但是当按下按钮并返回到按钮所在的位置时,背景里有活动吗?是的,我觉得太频繁了。但这是正确的,onResume比onStart更好。请注意,在UI线程上执行IO(就像调用getPage()
时在onCreate()
中所做的那样)可能会导致Android强制关闭您的应用程序。查看如何在单独的线程中执行IO。这也将使您的UI更具响应性。这同样适用于任何其他生命周期方法,如onStart()
,onResume()
,等等。同样,不要在这些方法中执行IO。