1

何が間違っていたのかわかりませんが、持っていた 2 つの異なるファイルのソース コードを結合して 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

PS

複数のユーザーの助けを借りて、以下のソース コードを作成することができましたが、まだいくつかの問題 (以下にリスト) とデータの文字列があります。 http://gamedemo.hostzi.com/apply.cgi?submit_button=Wireless_MAC&change_action=&action=適用&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%30%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&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&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%3A00m9=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%3=A00 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%3=3A00%3=3A00&m1 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%&m305=00 3A00%3A00%3A00%3A00&m31=00%3A00%3A00%3A00%3A00%3A00&end=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%=3A00m14=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

...サーバーにヒットすることはありません(ログを確認しています-上記の文字列を送信するはずのアプリで送信をクリックしても変更はありません-そのURLをブラウザーに貼り付けると正常に動作します)

また、サーバーに表示されない理由は、送信をクリックする前にテキストボックスが必要なため、送信をクリックする前にスペースを押す必要があるという事実が原因である可能性があります-テキストボックスを完全に削除する必要があると思います(私はまったく必要ありません-事前定義されたデータの文字列を送信したいだけです)が、ソースコードを解体せずに送信する方法がわからない.

ジャワ:

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
            }
        }

    }
}
4

3 に答える 3

4

new MyAsyncTask().execute // これは間違っています

execute() はメソッドです

このように呼び出します

new MyAsyncTask().execute("");

あなたのコードには多くのエラーがあります。onCreate の外側にコードを配置しました

于 2013-03-28T20:40:34.567 に答える
1

new MyAsyncTask の前の行を見てください。

    }{
     new MyAsyncTask().execute

これはすべてのコードを台無しにしています。IDE で適切にインデントします (たとえば、Eclipse では (CTRL-A I))。これにより、そのような問題が読みやすくなります。

Java で:

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

それは良いスタートです。;)

于 2013-03-28T20:41:16.540 に答える
0

ボタンのクリックで AddEditCountry クラスを作成しているようです。:) リファクタリングはあなたの問題を解決します。

于 2013-03-28T20:56:37.460 に答える