0

AppTools.java で HttpGet を接続するために使用するメソッドがあります。

public class AppTools extends Activity {
public void connectToServerWithURL(String URL)
        throws ClientProtocolException, IOException, JSONException {
/* Start connect */
    new Thread() {
client = new DefaultHttpClient();
request = new HttpGet(URL);
response = client.execute(request);
reader = new BufferedReader(new InputStreamReader(response.getEntity()
            .getContent()));
builder = new StringBuilder();
    for (String s = reader.readLine(); s != null; s = reader.readLine()) {
        builder.append(s);
    }

if (builder != null) {
        /* Transfer to JSONArray */
        jsonTransfer = new JSONObject(builder.toString());
        systemConfigJSONArray = jsonTransfer.getJSONArray(config);
        runOnUiThread(performResult);
    }
       }.start();
} 
private Runnable performResult = new Runnable() {
    public void run() {
        closeProgressDialog();
        performResult(systemConfigJSONArray);
    }
};

/** Connect complete, interface for Override **/
public void performResult(JSONArray resultArray) {
}

そして、別のアクティビティには AppTools が拡張されています。

public class A extends AppTools { 

アクティビティ A には、接続する URL を選択するための AlertDialog の使用があります。

new AlertDialog.Builder(this).setView(aLayout)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int        which) {
                    /* Set command */
                    if (spinner_options.getSelectedItemPosition() == 0) {
                        connectToServerWithURL("http://...");
                    } else if (spinner_options
                            .getSelectedItemPosition() == 1) {
                        connectToServerWithURL("http://...");
                    }
                }
            }).setNegativeButton("Cancel", null).show();

の aLayout に.setView(aLayout)はスピナーがあるため、setPositiveButton の onClick インターフェイス

スピナーの選択された位置を取得し、メソッドを実行します

しかし、コードは機能しません。LogCat は AlertController$ButtonHandler エラーを示します

何が問題ですか?

4

1 に答える 1

2
//Define String before OnCreate() method

String url;


new AlertDialog.Builder(this).setView(aLayout)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int        which) {
                    /* Set command */
                    if (spinner_options.getSelectedItemPosition() == 0) {
                        url="http://...";
                         new YourAsyncTask().execute();
                      //  connectToServerWithURL("http://...");

                    } else if (spinner_options
                            .getSelectedItemPosition() == 1) {
                         url="http://...";
                         new YourAsyncTask().execute();
                       // connectToServerWithURL("http://...");
                    }
                }
            }).setNegativeButton("Cancel", null).show();


 class YourAsyncTask extends AsyncTask<Void, Void, Void>
    {

        private ProgressDialog progressDialog;

        @Override
        protected void onPreExecute()
        {
            //show your dialog here
            progressDialog = ProgressDialog.show(yourActivity.this,"Please wait...", "Loading  ...", true);
        }

        @Override
        protected Void doInBackground(Void... params)
        {        
            //make your request here - it will run in a different thread
            try
            {

               connectToServerWithURL(url);  

            }
            catch (Exception e)
            {
                // TODO: handle exception
            }

            return null;
        }

        @Override
        protected void onPostExecute(Void result)
        {


                progressDialog.dismiss();


        }
于 2012-09-07T04:49:58.210 に答える