刷新Activity的内容或添加刷新按钮

时间:2012-09-12 14:15:07

标签: java android refresh

我可以刷新活动的内容吗?例如,我有一个菜单和一个按钮向我发送一个在线显示信息的应用程序内容,但要返回并再次返回,信息不会更新。

这是我的活动。

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

}

4 个答案:

答案 0 :(得分:1)

如果您希望每次显示“活动”时都应该运行获取数据并设置列表视图颜色的代码,而不是onResume()

答案 1 :(得分:1)

将您的代码放在这里

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();

       // make your work to data bind


}

答案 2 :(得分:1)

您只需将更新代码放入活动的onResume()方法即可。从其他活动返回时,将调用OnResume()方法。 但是,当您的活动恢复时,通常会调用onResume()方法。如果您打开并关闭对话框,那么您的活动将是“恢复”。因此,如果您在onResume中呼叫某个网络呼叫,那么它将消耗进程和网络速度。

备用解决方案是使用startActivityForResult()方法接收下一个活动的结果以及您可以调用Web API或任何工作的活动结果的基础。您可以使用onActivityResult()方法获取下一个活动的结果。 但在使用startActivityForResult方法之前,请确保下一个活动将通过调用setResult()方法设置结果。

答案 3 :(得分:0)

如果您想在每次参加活动时更新数据,则需要在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();
        }
    }