Java 从其他活动中删除对话框

Java 从其他活动中删除对话框,java,android,android-fragments,progressdialog,Java,Android,Android Fragments,Progressdialog,我有两项活动。在第一个更新程序活动中,我想创建一个ProgressDialog, 我想在其他活动(TopRatedFragment)中显示。我该怎么做 public class Updater extends Activity { String pid = "1"; JSONObject x; int success; ProgressDialog pDialog; int y; private String result; String

我有两项活动。在第一个更新程序活动中,我想创建一个ProgressDialog, 我想在其他活动(TopRatedFragment)中显示。我该怎么做

public class Updater extends Activity {

    String pid = "1";
    JSONObject x;
    int success;
    ProgressDialog pDialog;
    int y;
    private String result;
    String Url = "domain.com";
     JSONArray products = null;
    private static final String TAG_SUCCESS = "success";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.checker);

    }

    public int getResult(JSONObject json) {
        try {
            Log.d("Request: ", json.toString());
            // Getting JSON Array
            success = json.getInt(TAG_SUCCESS);
            Log.i("Status 2 z", "Status z: "+ success); 
         } catch (JSONException e) {
             e.printStackTrace();
         }

         return success;
     }

    public final int updaten(String site) {

        Update task = new Update();
        try {
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("name", site));
            x = task.execute(params).get();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ExecutionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        y = getResult(x);

        return y;
    }

class Update extends AsyncTask<List<NameValuePair>, String, JSONObject> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // Showing progress dialog
        pDialog = new ProgressDialog(Updater.this);
        pDialog.setMessage("Please wait...");
        pDialog.setCancelable(false);
        pDialog.show();

    }

    @Override
    protected JSONObject doInBackground(List<NameValuePair>... params) {

        // Getting JSON from URL

        JSONParser jParser = new JSONParser();
        JSONObject json = jParser.getJSONFromUrl(Url, params[0]);
        return json;
    }

    @Override
    protected void onPostExecute(JSONObject json) {
        Log.d("Updater ", json.toString());

    }
}
此方法在OnClickListener之后调用

public void Updatequest(final String site) {
        ConnectivityManager connMgr = (ConnectivityManager) getActivity()
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        if (networkInfo != null && networkInfo.isConnected()) {
            ado = new Updater();
            Log.i("Status 2 z", "Status z: " + z);
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                    getActivity());

            // set title
            alertDialogBuilder.setTitle("Do you really want to report?");

            // set dialog message
            alertDialogBuilder
                    .setMessage("Press Yes to submit your report")
                    .setCancelable(false)
                    .setPositiveButton("Yes",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int id) {
                                    // if this button is clicked, close
                                    // current activity
                                    int z = ado.updaten(site); //call the method in the other Activity
                                    Log.i("Status 1 z", "Status z: " + z);
                                    if (z == 1) {
                                        Toast.makeText(
                                                getActivity(),
                                                "Thanks, your report was successfull",
                                                Toast.LENGTH_LONG).show();
                                        z = 0;
                                    } else {
                                        Toast.makeText(
                                                getActivity(),
                                                "Please check your Internet connection!",
                                                Toast.LENGTH_LONG).show();
                                    }
                                }
                            })
                    .setNegativeButton("No",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int id) {
                                    // if this button is clicked, just close
                                    // the dialog box and do nothing
                                    dialog.cancel();
                                }
                            });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();
        }

        else {
            Toast.makeText(getActivity(),
                    "An error has occured please check your Internet Connection again", Toast.LENGTH_LONG)
                    .show();
        }
如果我点击按钮,会显示很多错误。第一个是致命的异常:main 和java.lang.NullPointerException


我怎样才能解决这个问题

如果查看logcat,您将找到完整的异常回溯。它告诉您抛出
NullPointerException
的行。请检查该按钮是否确实存在。也许,这是由错误的ID或其他原因造成的


如果您有一个非常长的回溯跟踪,请通读该跟踪,并查找“
由….
引起的”行。我经常遇到这样的情况,异常是封装的,在logcat中没有明显显示。

您的TopRatedFragment不是一个
活动。您的
更新程序
是一个
活动
,但不管理您的
TopRatedFragment
。为什么、如何以及在何处出现错误尚不清楚。在发布这么多不相关的代码之前,你应该阅读Google的想法。首先,你只有一个活动,另一个是片段,其次,你能详细说明你在代码中实际想做什么吗?一切正常JSON代码没有问题。但是我无法从其他活动中获取ProgressDialog。我该怎么做?
public void Updatequest(final String site) {
        ConnectivityManager connMgr = (ConnectivityManager) getActivity()
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        if (networkInfo != null && networkInfo.isConnected()) {
            ado = new Updater();
            Log.i("Status 2 z", "Status z: " + z);
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                    getActivity());

            // set title
            alertDialogBuilder.setTitle("Do you really want to report?");

            // set dialog message
            alertDialogBuilder
                    .setMessage("Press Yes to submit your report")
                    .setCancelable(false)
                    .setPositiveButton("Yes",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int id) {
                                    // if this button is clicked, close
                                    // current activity
                                    int z = ado.updaten(site); //call the method in the other Activity
                                    Log.i("Status 1 z", "Status z: " + z);
                                    if (z == 1) {
                                        Toast.makeText(
                                                getActivity(),
                                                "Thanks, your report was successfull",
                                                Toast.LENGTH_LONG).show();
                                        z = 0;
                                    } else {
                                        Toast.makeText(
                                                getActivity(),
                                                "Please check your Internet connection!",
                                                Toast.LENGTH_LONG).show();
                                    }
                                }
                            })
                    .setNegativeButton("No",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int id) {
                                    // if this button is clicked, just close
                                    // the dialog box and do nothing
                                    dialog.cancel();
                                }
                            });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();
        }

        else {
            Toast.makeText(getActivity(),
                    "An error has occured please check your Internet Connection again", Toast.LENGTH_LONG)
                    .show();
        }