2013-03-28 4 views
0

내가 잘못했는지 전혀 알지 못하지만 두 개의 다른 파일에서 소스 코드를 결합한 후 다음 코드를 컴파일 할 때 몇 가지 문제가 발생합니다. 이러한 문제를 일으키는 원인이 될 수있는 (학습 경험으로서의) 제안 사항과 해결 방법이 너무 복잡하지 않은 경우에 대한 제안.비동기 작업 구현 문제

(미리 감사드립니다!)

JAVA :

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 
+1

왜 내부 클래스 'DeviceConfig' 활동이 있습니까? – Geros

+0

가져 오기 import com.nfc.linkingmanager.DeviceConfig.MyAsyncTask; 그것을 제거하십시오 – Raghunandan

+0

메소드 외부 asynctask 클래스를 이동하십시오. 반환 유형 doInBackground()를 확인하십시오. – Raghunandan

답변

0

나는 이것이 당신의 문제인 것을 볼 수 있습니다 :

  1. nameValuePairs.add(new BasicNameValuePair(.. , ..);의 끝에는 )이 필요합니다.
  2. 당신은 당신의 AsyncTask의 범위를 종료하는 } 누락 및 사실
  3. 귀하의 MyAsyncTask 클래스는 public 수정이 (그렇지 않으면 당신은 중복 onCreate 방법이) 당신은 또한 당신의 내부 클래스를 종료 2를 놓치고 생각합니다. 그것을 제거하십시오.
  4. 귀하의 doInBackground 방법은 반환해야 Double 아닌 Object
  5. 귀하의 AsyncTask 이제 외부 클래스와 동일 AddEditCountry라고합니다. 이건 불가능 해. 이름 중 하나를 변경하십시오.
  6. AsyncTask 클래스가 내부에 정의되어 있습니다.onClick(View v) 메서드입니다. 클래스를 메소드 밖으로 옮기십시오.
  7. 클릭 수신기가 클래스가 아닌 OnClickListener이어야하므로 btn.setOnClickListener(this);this을 사용할 수 없습니다. onClick 메서드를 구현하는 OnClickListener을 새로 만들고이를 매개 변수로 전달하면 문제를 해결할 수 있습니다. (저장 버튼을 사용한 것처럼)

내부 액티비티 클래스가있는 이유가 표시되지 않습니다. 나는 여러분이 정말로 그 내부 활동을 원 하든지 아니면 DeviceConfig의 메소드/기능을 에서 원할지 아니면 두 개의 다른 파일에 있어야하는지 다시 생각해 보는 것이 좋습니다.

EDIT (s) : 더 많은 문제가 나열되었습니다.

+0

1. 설명 된 방법으로 소스를 업데이트했습니다! 상황이 더 좋아 보인다! (위의 문제 로그를 업데이트했습니다. 여전히 약간의 문제가 있습니다.) 2. 문제를 고칩니다. (고마워!) 4 가지 버그/문제가 남아 있습니다. – FLDev2013

+0

몇 가지 해결책으로 내 대답을 업데이트했습니다. – MAV

+0

굉장! 감사! – FLDev2013

0

난에서 onCreate 전에 (당신이 당신의 AsyncTask를 끝에 '}'잊었 생각)