Java 从其他活动中删除对话框
我有两项活动。在第一个更新程序活动中,我想创建一个ProgressDialog, 我想在其他活动(TopRatedFragment)中显示。我该怎么做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
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();
}