全て、
ボタンクリックで送信されたユーザー入力に基づいてサーバーにhttprequestを作成する小さな機能アプリがあります。このhttprequestを非同期タスクにすることで、小さなアプリをSDK11+と互換性のあるものにするためのヘルプを探しています。
私は非同期タスクについて読んで数日を過ごし、原理と、httprequestをUIスレッドから遠ざける理由を理解しました。
しかし、私の場合、コードを機能させることができません。コンパイルすらできません。私は機能しているコードの下に(つまり、httprequestを非同期にしようとする前に)含めました
私はいくつかの特定の助けに非常に感謝します。ごみのコードについてお詫び申し上げます。この質問のバリエーションはすでに回答済みです。
よろしくお願いしますジェイミー
私のMainActivityコードは以下のとおりです。
package com.jrcdesign.ebookbeamer;
import java.io.IOException;
import org.apache.http.client.ClientProtocolException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.widget.Spinner;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
Button sendButton;
Button btnSubmit;
EditText msgTextField;
EditText msg2TextField;
Spinner spinner1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// load the layout
setContentView(R.layout.main);
// make message text field object
msgTextField = (EditText) findViewById(R.id.msgTextField);
msg2TextField = (EditText) findViewById(R.id.msg2TextField);
// make send button object
sendButton = (Button) findViewById(R.id.sendButton);
btnSubmit = (Button) findViewById(R.id.btnSubmit);
addListenerOnButton();
addListenerOnSpinnerItemSelection();
}
public void addListenerOnSpinnerItemSelection() {
spinner1 = (Spinner) findViewById(R.id.spinner1);
spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener());
}
// get the selected dropdown list value
public void addListenerOnButton() {
spinner1 = (Spinner) findViewById(R.id.spinner1);
btnSubmit = (Button) findViewById(R.id.btnSubmit);
btnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,
"OnClickListener : " +
"\nSpinner 1 : "+ String.valueOf(spinner1.getSelectedItem()),
Toast.LENGTH_SHORT).show();
msgTextField.setText("" + String.valueOf(spinner1.getSelectedItem()));
}
});
}
// Called when the SEND button is pressed
// Need to make this an async task
public void send(View v)
{
// get the message from the message text box
msgTextField.setText("" + String.valueOf(spinner1.getSelectedItem()));
String msg = msgTextField.getText().toString();
String msg2 = msg2TextField.getText().toString();
if (msg.length()>0)
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://54.235.198.96/test1.php");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", msg2));
nameValuePairs.add(new BasicNameValuePair("message", msg));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httppost);
msgTextField.setText(""); // clear text box
msg2TextField.setText(""); // clear text box
Toast.makeText(MainActivity.this,
"Your request is being processed",
Toast.LENGTH_LONG).show();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
else
{
// display message if text fields are empty
Toast.makeText(getBaseContext(),"All fields are required",Toast.LENGTH_SHORT).show();
}
}
}