1

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

这是我的活动。

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

4 回答 4

1

获取数据并设置列表视图颜色的代码应该被放入,onResume()而不是onCreate如果您希望它在每次显示 Activity 时运行。

于 2012-09-12T14:21:33.777 回答
1

把你的代码放在这里

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

       // make your work to data bind


}
于 2012-09-12T14:28:12.933 回答
1

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

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

于 2012-09-12T14:43:21.287 回答
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();
        }
    }
于 2012-09-12T14:20:57.440 回答