2013-03-28 5 views
1

Я понятия не имею, что я сделал неправильно, но у меня возникло несколько проблем с компиляцией следующего кода после объединения исходного кода из двух разных файлов, которые у меня были, и реализации AsyncTask. Любые предложения относительно того, что может вызывать эти проблемы (как учебный опыт), и если это не слишком сложно, способ оценить их.Ошибки синтаксиса AsyncTask

(Заранее спасибо!)

ПРОБЛЕМЫ:

Описание Ресурс Путь Расположение Тип

The nested type AddEditCountry cannot hide an enclosing type AddEditCountry.java /Game Demo/src/com/nfc/gamedemo line 159 Java Problem 
Syntax error, insert "AssignmentOperator Expression" to complete Expression AddEditCountry.java /Game Demo/src/com/nfc/gamedemo line 153 Java Problem 
The left-hand side of an assignment must be a variable AddEditCountry.java /Game Demo/src/com/nfc/gamedemo line 153 Java Problem 

P.S.

Я мог не прийти с исходным кодом ниже с помощью нескольких пользователей, однако я все еще имеющих несколько проблем (перечислены ниже) и строку данных: http://gamedemo.hostzi.com/apply.cgi?submit_button=Wireless_MAC&change_action=&action=Apply&wl_macmode=allow&wl_maclist=32&wait_time=3&wl_mac_filter=1&start=&wl_macmode1=allow&m0=00%3A1E%3A33%3AFE%3A0D%3A38&m16=00%3A00%3A00%3A00%3A00%3A00&m1=00%3A00%3A00%3A00%3A00%3A00&m17=00%3A00%3A00%3A00%3A00%3A00&m2=00%3A00%3A00%3A00%3A00%3A00&m18=00%3A00%3A00%3A00%3A00%3A00&m3=00%3A00%3A00%3A00%3A00%3A00&m19=00%3A00%3A00%3A00%3A00%3A00&m4=00%3A00%3A00%3A00%3A00%3A00&m20=00%3A00%3A00%3A00%3A00%3A00&m5=00%3A00%3A00%3A00%3A00%3A00&m21=00%3A00%3A00%3A00%3A00%3A00&m6=00%3A00%3A00%3A00%3A00%3A00&m22=00%3A00%3A00%3A00%3A00%3A00&m7=00%3A00%3A00%3A00%3A00%3A00&m23=00%3A00%3A00%3A00%3A00%3A00&m8=00%3A00%3A00%3A00%3A00%3A00&m24=00%3A00%3A00%3A00%3A00%3A00&m9=00%3A00%3A00%3A00%3A00%3A00&m25=00%3A00%3A00%3A00%3A00%3A00&m10=00%3A00%3A00%3A00%3A00%3A00&m26=00%3A00%3A00%3A00%3A00%3A00&m11=00%3A00%3A00%3A00%3A00%3A00&m27=00%3A00%3A00%3A00%3A00%3A00&m12=00%3A00%3A00%3A00%3A00%3A00&m28=00%3A00%3A00%3A00%3A00%3A00&m13=00%3A00%3A00%3A00%3A00%3A00&m29=00%3A00%3A00%3A00%3A00%3A00&m14=00%3A00%3A00%3A00%3A00%3A00&m30=00%3A00%3A00%3A00%3A00%3A00&m15=00%3A00%3A00%3A00%3A00%3A00&m31=00%3A00%3A00%3A00%3A00%3A00&end=

... никогда (я проверяю журналы - нет изменений при нажатии submit в приложении, которое должно отправить строку выше), и если я вставляю этот URL-адрес в браузер, он работает успешно)

Также - причина, по которой он никогда не появляется на сервере, может быть вызван тем фактом, что я должен ударить пробел, прежде чем я могу нажать кнопку «Отправить», потому что текстовое поле требуется, прежде чем нажимать «Отправить» - я думаю, мне может понадобиться устранить текстовое поле irely (мне это совсем не нужно - я просто хочу отправить предопределенную строку данных), но я не уверен, что знаю, как это сделать, не разбирая исходный код.

JAVA:

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 DeviceConfig extends Activity implements OnClickListener{ 

    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); 
     btn.setOnClickListener(this); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 
      if(value.getText().toString().length()<1){ 

       // out of range 
       Toast.makeText(this, "please enter something", Toast.LENGTH_LONG).show(); 
      }else{ 
       pb.setVisibility(View.VISIBLE); 
       new MyAsyncTask().execute(value.getText().toString());  
      } 


    } 

    private class MyAsyncTask 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://192.168.1.1/apply.cgi"); 

      try { 
       // Add your data 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
       nameValuePairs.add(new BasicNameValuePair("myHttpData", valueIWantToSend)); 
       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 
      } 
     } 

    } 
} 
+0

Я изменил ваш код, попробуйте этот http://pastebin.com/w96zfcPe, вы не уточнили меня, когда вы хотите выполнить свой asyncTask – Pragnani

+0

Я запустил исходный код - почти идеально! Все еще есть несколько ошибок в журнале проблем, и строка данных никогда не попадает на сервер, но я чувствую, что мы получаем ОЧЕНЬ близко к тому, чтобы она работала! – FLDev2013

ответ

4

new MyAsyncTask().execute // это неправильно

выполнить() является методом

вызов как этот

new MyAsyncTask().execute(""); 

You кода имеют много ошибок. Вы разместили код из стороны внешней OnCreate

+0

@ FLDev2013 не волнуйтесь, я отправлю его с кодом – Pragnani

+0

Я обновил свой источник соответственно (все еще есть несколько вопросов) – FLDev2013

+0

@ FLDev2013: у вас все еще проблема? –

1

Посмотрите на линии перед новым MyAsyncTask:

}{ 
    new MyAsyncTask().execute 

это портя весь код. Отступ должным образом в вашей среде IDE ((CTRL-A I), например, в eclipse). Это сделает такие проблемы более читабельными.

В Java:

* all statements (java instructions) must be inside methods. 
* all methods inside classes. 

Это хорошее начало. ;)

+0

Im очень уверен, что я обновил его правильно - я не уверен, хотя – FLDev2013

+0

[текущие проблемы, перечисленные выше] – FLDev2013

+0

Все еще есть проблемы ... любые предложения? – FLDev2013

0

Кажется, что вы создаете класс AddEditCountry при нажатии кнопки! :) Рефакторинг решит ваши проблемы.

+0

Это что-то, что можно сделать из меню рефакторинга - или вы имели в виду ручной рефакторинг, выбирая код (если его последний - вот что я сейчас делаю! Попытка выяснить, что пошло не так по частям!):) – FLDev2013

Смежные вопросы