Android ProgressDialog和AlertDialog发生了奇怪的事情
我正在从我的程序向FB发布一些东西。 除了我想先显示ProgressDialog,然后再显示AlertDialog之外,效果非常好 由于某些原因,ProgressDialog根本不显示,而AlertDialog显示,但代码的执行会继续,不会“等待”Android ProgressDialog和AlertDialog发生了奇怪的事情,android,android-alertdialog,progressdialog,Android,Android Alertdialog,Progressdialog,我正在从我的程序向FB发布一些东西。 除了我想先显示ProgressDialog,然后再显示AlertDialog之外,效果非常好 由于某些原因,ProgressDialog根本不显示,而AlertDialog显示,但代码的执行会继续,不会“等待” 你真的应该在一个异步任务中向facebook发帖。这会解决你的问题。你真的应该在一个异步任务中向facebook发帖。这会解决您的问题。试试这个课程 private void uploadToFB(){ if (settings.getCur
你真的应该在一个异步任务中向facebook发帖。这会解决你的问题。你真的应该在一个异步任务中向facebook发帖。这会解决您的问题。试试这个课程
private void uploadToFB(){
if (settings.getCurrentUploadToFB())
new PostBackground.execute();
else
finish();
}
private class PostBackground extends AsyncTask<Void, Void, Void>{
private ProgressDialog progressDialog;
public void doInBackgound(Void...obj){
publishUpdate();
Bundle parameters = new Bundle();
parameters.putString("link","https://market.android.com/details?id=il.co.anykey.games.yaniv.lite&feature=search_result");
parameters.putString("picture","http://www.anykey.co.il/images/launcher_yaniv.png");
parameters.putString("name","YanivLite on Android");
parameters.putString("caption","Can you beat my score?");
parameters.putString("description","I scored "+ ScoringForScoreloop.getScore() + " in YanivLite on Android. Can you beat my score?");
facebookConnector.postMessageOnWall(parameters);
}
public void postUpdate(Void arg){
progressDialog = ProgressDialog.show(this, "Posting to Facebook", "Please wait ...", true);
}
public void postExecute(Void result){
if(progressDialog!=null)
progressDialog.dismiss();
progressDialog = null;
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle(R.string.uploadedToFacebookTitle);
ScoringForScoreloop.addAssafedScore();
alertDialog.setMessage(getString(R.string.uploadedToFacebookMessage));
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE,getString(R.string.ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
try {
alertDialog.dismiss();
finishGame();
} catch (Exception ex) {
ex.printStackTrace();
}
return;
} });
alertDialog.setCancelable(false); // prevent use of back button which would skip the listener
alertDialog.show();
}
}
private void uploadToFB(){
if(settings.getCurrentUploadToFB())
新建PostBackground.execute();
其他的
完成();
}
私有类PostBackground扩展异步任务{
私有进程对话;
公共无效doInBackgound(无效…obj){
publishUpdate();
Bundle参数=新Bundle();
parameters.putString(“link”https://market.android.com/details?id=il.co.anykey.games.yaniv.lite&feature=search_result");
parameters.putString(“picture”http://www.anykey.co.il/images/launcher_yaniv.png");
parameters.putString(“name”,“Android上的YanivLite”);
putString(“标题”,“你能打败我的分数吗?”);
parameters.putString(“description”,“I scored”+scoringforcoreloop.getScore()+”在Android上的YanivLite中。你能打败我的分数吗?”);
facebookConnector.postMessageOnWall(参数);
}
公共无效状态更新(无效参数){
progressDialog=progressDialog.show(这是“发布到Facebook”,“请稍候…”,true);
}
公共作废后执行(作废结果){
如果(progressDialog!=null)
progressDialog.disclose();
progressDialog=null;
final AlertDialog AlertDialog=新建AlertDialog.Builder(this.create();
alertDialog.setTitle(R.string.uploadedToFacebookTitle);
ScoringForScoreloop.addAssafedScore();
setMessage(getString(R.string.uploadedToFacebookMessage));
alertDialog.setButton(DialogInterface.BUTTON_正数、getString(R.string.ok)、new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int其中){
试一试{
alertDialog.disclose();
finishGame();
}捕获(例外情况除外){
例如printStackTrace();
}
返回;
} });
alertDialog.setCancelable(false);//防止使用会跳过侦听器的后退按钮
alertDialog.show();
}
}
试试这门课
private void uploadToFB(){
if (settings.getCurrentUploadToFB())
new PostBackground.execute();
else
finish();
}
private class PostBackground extends AsyncTask<Void, Void, Void>{
private ProgressDialog progressDialog;
public void doInBackgound(Void...obj){
publishUpdate();
Bundle parameters = new Bundle();
parameters.putString("link","https://market.android.com/details?id=il.co.anykey.games.yaniv.lite&feature=search_result");
parameters.putString("picture","http://www.anykey.co.il/images/launcher_yaniv.png");
parameters.putString("name","YanivLite on Android");
parameters.putString("caption","Can you beat my score?");
parameters.putString("description","I scored "+ ScoringForScoreloop.getScore() + " in YanivLite on Android. Can you beat my score?");
facebookConnector.postMessageOnWall(parameters);
}
public void postUpdate(Void arg){
progressDialog = ProgressDialog.show(this, "Posting to Facebook", "Please wait ...", true);
}
public void postExecute(Void result){
if(progressDialog!=null)
progressDialog.dismiss();
progressDialog = null;
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle(R.string.uploadedToFacebookTitle);
ScoringForScoreloop.addAssafedScore();
alertDialog.setMessage(getString(R.string.uploadedToFacebookMessage));
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE,getString(R.string.ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
try {
alertDialog.dismiss();
finishGame();
} catch (Exception ex) {
ex.printStackTrace();
}
return;
} });
alertDialog.setCancelable(false); // prevent use of back button which would skip the listener
alertDialog.show();
}
}
private void uploadToFB(){
if(settings.getCurrentUploadToFB())
新建PostBackground.execute();
其他的
完成();
}
私有类PostBackground扩展异步任务{
私有进程对话;
公共无效doInBackgound(无效…obj){
publishUpdate();
Bundle参数=新Bundle();
parameters.putString(“link”https://market.android.com/details?id=il.co.anykey.games.yaniv.lite&feature=search_result");
parameters.putString(“picture”http://www.anykey.co.il/images/launcher_yaniv.png");
parameters.putString(“name”,“Android上的YanivLite”);
putString(“标题”,“你能打败我的分数吗?”);
parameters.putString(“description”,“I scored”+scoringforcoreloop.getScore()+”在Android上的YanivLite中。你能打败我的分数吗?”);
facebookConnector.postMessageOnWall(参数);
}
公共无效状态更新(无效参数){
progressDialog=progressDialog.show(这是“发布到Facebook”,“请稍候…”,true);
}
公共作废后执行(作废结果){
如果(progressDialog!=null)
progressDialog.disclose();
progressDialog=null;
final AlertDialog AlertDialog=新建AlertDialog.Builder(this.create();
alertDialog.setTitle(R.string.uploadedToFacebookTitle);
ScoringForScoreloop.addAssafedScore();
setMessage(getString(R.string.uploadedToFacebookMessage));
alertDialog.setButton(DialogInterface.BUTTON_正数、getString(R.string.ok)、new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int其中){
试一试{
alertDialog.disclose();
finishGame();
}捕获(例外情况除外){
例如printStackTrace();
}
返回;
} });
alertDialog.setCancelable(false);//防止使用会跳过侦听器的后退按钮
alertDialog.show();
}
}
在进度对话框中使用AsyncTask。在进度对话框中使用AsyncTask。看一看Pratik的答案——他比我更擅长发布所有代码:O)看一看Pratik的答案——他比我更擅长发布所有代码:O)