Java 异步任务实现问题
我不知道我做错了什么,但是在合并了来自两个不同文件的源代码之后,我在编译下面的代码时遇到了一些问题。任何关于是什么导致这些问题的建议(作为学习经验)以及如果不是太复杂的话,请提供解决方法 (提前感谢!) 爪哇:Java 异步任务实现问题,java,android,http,post,android-asynctask,Java,Android,Http,Post,Android Asynctask,我不知道我做错了什么,但是在合并了来自两个不同文件的源代码之后,我在编译下面的代码时遇到了一些问题。任何关于是什么导致这些问题的建议(作为学习经验)以及如果不是太复杂的话,请提供解决方法 (提前感谢!) 爪哇: 我认为您在异步任务结束时(在onCreate之前)忘记了一个“}”从我看到这是您的问题: 每个名称值对。添加(新的基本名称值对(…,…);需要额外的) 您缺少一个}来结束AsyncTask的作用域,实际上我认为您也缺少2个来结束内部类(否则您就有重复的onCreate方法) 您的MyAs
我认为您在异步任务结束时(在onCreate之前)忘记了一个“}”从我看到这是您的问题:
名称值对。添加(新的基本名称值对(…,…);
需要额外的)
}
来结束AsyncTask
的作用域,实际上我认为您也缺少2个来结束内部类(否则您就有重复的onCreate
方法)MyAsyncTask
类有一个public
修饰符。移除它doInBackground
方法应该返回一个Double
而不是对象
AsyncTask
现在被称为AddEditCountry
,它与外部类相同。这是不可能的。更改其中一个名称AsyncTask
类正在onClick(视图v)
方法中定义。将类移出方法。(btn.setOnClickListener(this)中使用this
因为单击侦听器需要是OnClickListener
,而您的类不是。您可以通过创建一个新的OnClickListener
来解决这个问题,它实现了onClick方法并将其作为参数传递。(就像您使用“保存”按钮所做的那样)
AddEditCountry
中DeviceConfig
中的方法/功能,或者它们应该放在两个不同的文件中
编辑:列出了更多问题。为什么有内部类
DeviceConfig
活动?导入导入com.nfc.linkingmanager.DeviceConfig.MyAsyncTask;删除它将asynctask类移到方法之外。检查返回类型doInBackground().1。我用你描述的方法更新了源代码!事情看起来好多了!(我也更新了上面的问题日志-我还有一些问题)2。我纠正了}个问题(谢谢!)我还有4个bug/问题,你知道这些可能是什么吗?1。我加了第二个)2。我相信我也纠正了这些问题(不再出现在问题日志中)3。删除了公共修饰符4。从Object更改为Double 5。我相信我也纠正了这一点。我编辑了这个,但我认为它有问题。删除了btn.setOnClickListener(此);[不确定在此添加或执行什么操作]
import android.app.Activity;
import android.app.AlertDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.ViewGroup;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
import android.widget.TimePicker;
import android.widget.Toast;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.opengl.Visibility;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class AddEditCountry extends Activity {
private long rowID;
private EditText nameEt;
private EditText capEt;
private EditText codeEt;
private TimePicker timeEt;
private EditText value;
private Button btn;
private ProgressBar pb;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.deviceconfig);
value=(EditText)findViewById(R.id.editText1);
btn=(Button)findViewById(R.id.button1);
pb=(ProgressBar)findViewById(R.id.progressBar1);
pb.setVisibility(View.GONE);
nameEt = (EditText) findViewById(R.id.nameEdit);
capEt = (EditText) findViewById(R.id.capEdit);
codeEt = (EditText) findViewById(R.id.codeEdit);
timeEt = (TimePicker) findViewById(R.id.timeEdit);
Bundle extras = getIntent().getExtras();
if (extras != null)
{
rowID = extras.getLong("row_id");
nameEt.setText(extras.getString("name"));
capEt.setText(extras.getString("cap"));
codeEt.setText(extras.getString("code"));
String time = extras.getString("time");
String[] parts = time.split(":");
timeEt.setCurrentHour(Integer.valueOf(parts[0]));
timeEt.setCurrentMinute(Integer.valueOf(parts[1]));
timeEt.setIs24HourView(false);
DecimalFormat df = new DecimalFormat ("00");
String minutes = df.format(min);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClick(View v) {
// TODO Auto-generated method stub
pb.setVisibility(View.VISIBLE);
(value.getText().toString());
}{
new MyAsyncTask().execute
class AddEditCountry extends AsyncTask<String, Integer, Double>{
@Override
protected Double doInBackground(String... params) {
// TODO Auto-generated method stub
postData(params[0]);
return null;
}
protected void onPostExecute(Double result){
pb.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(), "command sent", Toast.LENGTH_LONG).show();
}
protected void onProgressUpdate(Integer... progress){
pb.setProgress(progress[0]);
}
public void postData(String valueIWantToSend) {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://gamedemo.hostzi.com/apply.cgi");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("submit_button", "Wireless_MAC"));
nameValuePairs.add(new BasicNameValuePair("change_action", ""));
nameValuePairs.add(new BasicNameValuePair("action", "Apply"));
nameValuePairs.add(new BasicNameValuePair("wl_macmode", "allow"));
nameValuePairs.add(new BasicNameValuePair("wl_maclist", "32"));
nameValuePairs.add(new BasicNameValuePair("wait_time", "3"));
nameValuePairs.add(new BasicNameValuePair("wl_mac_filter", "1"));
nameValuePairs.add(new BasicNameValuePair("start", "allow"));
nameValuePairs.add(new BasicNameValuePair("wl_macmode1", "allow"));
nameValuePairs.add(new BasicNameValuePair("m0", "00%3A1E%3A33%3AFE%3A0D%3A38"));
nameValuePairs.add(new BasicNameValuePair("m16", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m1", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m17", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m2", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m18", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m3", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m19", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m4", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m20", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m5", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m21", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m6", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m22", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m7", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m23", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m8", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m24", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m9", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m25", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m10", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m26", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m11", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m27", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m12", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m28", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m13", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m29", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m14", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m30", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m15", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("m31", "00%3A00%3A00%3A00%3A00%3A00"));
nameValuePairs.add(new BasicNameValuePair("end", ""));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
Button saveButton =(Button) findViewById(R.id.saveBtn);
saveButton.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
if (nameEt.getText().length() != 0)
{
AsyncTask<Object, Object, Object> saveContactTask =
new AsyncTask<Object, Object, Object>()
{
@Override
protected Double doInBackground(Object... params)
{
saveContact();
return null;
}
@Override
protected void onPostExecute(Object result)
{
finish();
}
};
saveContactTask.execute((Object[]) null);
}
else
{
AlertDialog.Builder alert = new AlertDialog.Builder(AddEditCountry.this);
alert.setTitle(R.string.errorTitle);
alert.setMessage(R.string.errorMessage);
alert.setPositiveButton(R.string.errorButton, null);
alert.show();
}
}
});
}
private void saveContact()
{
DatabaseConnector dbConnector = new DatabaseConnector(this);
if (getIntent().getExtras() == null)
{
dbConnector.insertContact(nameEt.getText().toString(),
capEt.getText().toString(),
timeEt.getCurrentHour().toString() + ":"
+ timeEt.getCurrentMinute().toString(),
codeEt.getText().toString());
}
else
{
dbConnector.updateContact(rowID,
nameEt.getText().toString(),
capEt.getText().toString(),
timeEt.getCurrentHour().toString() + ":"
+ timeEt.getCurrentMinute().toString(),
codeEt.getText().toString());
}
}}
Description Resource Path Location Type
The left-hand side of an assignment must be a variable AddEditCountry.java /app/Game Demo/src/com/app/gamedemo line 116 Java Problem
The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (AddEditCountry) AddEditCountry.java /app/Game Demo/src/com/app/gamedemo line 80 Java Problem
Syntax error on token(s), misplaced construct(s) AddEditCountry.java /app/Game Demo/src/com/app/gamedemo line 60 Java Problem
Syntax error, insert ";" to complete BlockStatements AddEditCountry.java /app/Game Demo/src/com/app/gamedemo line 120 Java Problem
Syntax error, insert "AssignmentOperator Expression" to complete Assignment AddEditCountry.java /app/Game Demo/src/com/app/gamedemo line 120 Java Problem
Syntax error, insert "AssignmentOperator Expression" to complete Expression AddEditCountry.java /app/Game Demo/src/com/app/gamedemo line 116 Java Problem
Syntax error, insert "AssignmentOperator Expression" to complete Expression AddEditCountry.java /app/Game Demo/src/com/app/gamedemo line 116 Java Problem
Syntax error on token ".", = expected AddEditCountry.java /app/Game Demo/src/com/app/gamedemo line 1 Java Problem
Syntax error on token(s), misplaced construct(s) AddEditCountry.java /app/Game Demo/src/com/app/gamedemo line 122 Java Problem
Syntax error on tokens, AnnotationName expected instead AddEditCountry.java /app/Game Demo/src/com/app/gamedemo line 207 Java Problem