1

アクティビティのコンテンツを更新できるので、たとえば、オンラインで情報を表示するアプリケーション コンテンツをメニューとボタンで送信しますが、戻ってもう一度戻ると、情報が更新されません。

これが私のアクティビティです。

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

ここにコードを入れてください

@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() メソッドが呼び出されることがよくあります。ダイアログを開いて閉じると、アクティビティは Resume になります。SO onResume で何らかのネットワーク呼び出しを呼び出している場合、プロセスとネットワーク速度が消費されます。

別の解決策は、startActivityForResult()メソッドを使用して、次のアクティビティからの結果と、Web API または任意の作業を呼び出すことができるアクティビティ結果のベースを受け取ることです。onActivityResult()メソッドで次のアクティビティの結果を取得できます。ただし、startActivityForResult メソッドを使用する前に、次のアクティビティがsetResult()メソッドを呼び出して結果を設定することを確認してください。

于 2012-09-12T14:43:21.287 に答える
1

データを取得してリスト ビューの色を設定するコードは、Activity が表示されるたびに実行するのではonResume()なく、配置する必要があります。onCreate

于 2012-09-12T14:21:33.777 に答える
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 に答える