0

JSONPARSER オブジェクトの makeHttpRequest にパラメーターを追加しようとしています。これはクラスの継承に関係しているように感じますが、うまくいきません。データベースにデータを投稿できるように、DBURL をパラメーターにしようとしています。私は Register クラスでこの [チュートリアル][1] に従っています。また、onPostExecute メソッドでは、MainActivity.this; 機能しません。最初のパラメーターの null 値のみです。どんなアイデアでも素晴らしいでしょう。さらに情報が必要な場合はお知らせください。

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.regex.Pattern;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import android.accounts.Account;
import android.accounts.AccountManager;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.util.Patterns;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

@SuppressLint("SetJavaScriptEnabled")
public class MainActivity extends Activity
{

    private static final String DBURL = "http:/demo.php";

    //obtain access to jsonparser class functions
    JSONParser jsonParser = new JSONParser();

    //local initialization of webview
    private WebView webview;
    Context context = this;


    //storage of collected emails, unlimited size
    ArrayList<String> emailsCollection = new ArrayList<String>();

    @SuppressWarnings("rawtypes")
    //to later remove duplicate arraylist items, see solution below
    HashSet hashedEmails = new HashSet();

    @SuppressWarnings("unchecked")
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //progress dialog message while loading app resources
        final ProgressDialog pd = ProgressDialog.show(this, "", "Starting App",true);


        //webview specific settings
        webview = (WebView) findViewById(R.id.webview1);
        webview.getSettings().setJavaScriptEnabled(true);
     //   webview.getSettings().setSupportZoom(true);  
     //   webview.getSettings().setBuiltInZoomControls(true);
     //   webview.getSettings().setLoadWithOverviewMode(true);
     //   webview.getSettings().setUseWideViewPort(true);
        webview.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);

    //creating an instance of the webview client that supports a progress dialog    
        webview.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                if(pd.isShowing()&&pd!=null)
                {
                    pd.dismiss();
                }
            }
        });

        //url to load in the webview
        webview.loadUrl("http://google.com/");
        //overrides and sets title of app title bar despite original activity name
        setTitle("");



    }

    protected void onPostExecute(String file_url)
    {
        if(file_url !=null)
        {
            Toast.makeText(null, file_url, Toast.LENGTH_LONG).show();
        }
    }
}
4

2 に答える 2

2

このメソッドの目的は、UI スレッドで結果を処理するために、(doInBackground()ワーカー スレッドで実行される) ジョブの結果を に渡すことです。onPostExecuteこれは、ジョブの実行が成功したときにユーザー インターフェイスを更新する場合に必要です。

于 2013-09-12T05:05:22.797 に答える
1

file_urlpostExecute()メソッドで何も返さないため、常に null になりますdoInBackground()。JSON 応答を解析し、catch ブロックの前に返します。

編集: この行の後、

 Log.d("JSON Status: ", json.toString());

これを追加:

    if (json != null){
        return json.toString();
    }

EDIT2:

DBURL別の にあるため、アクセスできませんClass。これをパブリックに変更します。

 public static final String DBURL = "http:/demo.php";

そして、使用するAsyncTask代わりにあなたからDBURLMainActivity.DBURL

于 2013-09-12T04:54:46.733 に答える