私はAndroidの初心者です。これは初めてのアプリケーションです。私はこの数日間、この問題にぶち当たっていて、答えを探すことをあきらめています。私はこれについていくつかの助けに非常に感謝します。TextViewの設定TextとColorは単に無視されます
メソッドsendSelectedItemは、ボタンをクリックすると呼び出されます。 else if節では、メソッドsetTvTextとsetTvColorは単純に無視され、TextViewのTextとColorを設定することになっていますが、何もしません。次に続くのは、Webサーバー上のPHPスクリプトに対するhttpPOST要求です。単純なStringを返します。この部分は問題ありません。
public void sendSelectedItem(View v){
if(v == findViewById(R.id.btnCancel)){
setTvText("nothing happens");
setTvColor(0);
}
else if (v == findViewById(R.id.btnSend)){
setTvText("selection transmitted");
setTvColor(1);
/*SelectedItemHttpPost si = new SelectedItemHttpPost();
try {
String retResp = si.executeHttpPost(selectedItem);
setTvText(retResp);
setTvColor(2);
}
catch(Exception e){};*/
}
}
あなたはsetTvTextとsetTvColorは、上記描かれているように、残りのコードは、コメントアウトされている場合にのみ実行されている理由を考えて、持っていますか?
場合によっては、SelectedItemHttpPostのコードを貼り付けます。 ありがとうございます。
public class SelectedItemHttpPost{
private HttpClient client = null;
private HttpPost request = null;
private HttpResponse response = null;
private List<NameValuePair> postParameters = null;
private UrlEncodedFormEntity formEntity = null;
private String responsePHP = "";
private BufferedReader in = null;
private StringBuffer sb = null;
public SelectedItemHttpPost(){
}
public String executeHttpPost(String selectedItem) throws Exception{
try{
client = new DefaultHttpClient();
request = new HttpPost("http://www.somedomain.com/test/test.php");
postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("arg1", selectedItem));
formEntity = new UrlEncodedFormEntity(postParameters);
request.setEntity(formEntity);
response = client.execute(request);
in = new BufferedReader((new InputStreamReader(response.getEntity().getContent())));
sb = new StringBuffer("");
sb.append(in.readLine());
in.close();
responsePHP = sb.toString();
return responsePHP;
}
finally {}
}
}
あなたは完全なコードを投稿し、setTvColorメソッドを含める必要があります – monkjack
Woahはあなたが無視されていると確信していますか?すべてのHTTP要求ソケットの作成と解析をUIスレッド上で行っています。だからあなたはおそらく、ボタンが押されたようなものを見ているでしょう...そして、画面が反応しないのは、実際にネットワーク上のデータをリッスンしているスレッドが、もしそうなら、AsyncTaskを、doInBackground()で実行されたHttpPostで、setTvColorとsetTvTextをpostExecute()で使用してください。 –
ありがとうございました。私は決してスレッドを手に入れることはないだろう。それは私にはまったく新しいことです - 私はずっと先を見ています。私はそれについて詳しく説明し、うまくいけば私の最初のアプリをうまく実装できるようになるでしょう。再度、感謝します。 – user552039