我有一个名为的静态ProgressDialog对象
对话
在我的班级里
dialog = new ProgressDialog(this);
执行此代码
buildGroupAccessDialog(groupName);
dialog.show(c, "Joining", "Please wait...");
这些是所涉及的方法
private void builGroupAccessDialog(final String groupName){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
// set title
alertDialogBuilder.setTitle("Join group");
// set dialog message
alertDialogBuilder
.setMessage("Do you want to join " + groupName + " ?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//join group
joinGroup(groupName);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
}).create()
.show();
}
joinGroup()被调用:
private void joinGroup(final String groupName) {
Log.d("TRY TO JOIN GROUP:", groupName);
new Thread(new Runnable() {
@Override
public void run() {
//Get the device
WifiP2pDevice dev = mRecyclerViewFragment.getDeviceMap().get(groupName);
WifiP2pConfig config = new WifiP2pConfig();
config.deviceAddress = dev.deviceAddress;
wifip2pManager.connect(wifiDirectChannel, config, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Log.d("CONNECT", "SUCCESS");
// This is used for avoiding registering another BroadcastListener on purpose, keeping only one but responding
// to intent only when I'm sure I want it
iWantToConnect = true;
// Hide progress dialog
dialog.dismiss();
}
@Override
public void onFailure(int reason) {
Log.d("CONNECT", "FAILURE");
//Toast.makeText(getApplication(), "PIPPO", Toast.LENGTH_LONG);
}
});
}
}).start();
}
我有两个问题:
请注意,我说的是
对话
变量
1)
“进度对话框”在不等待用户AlertDialog响应的情况下启动(如何使其同步?)
2)
进度对话框未关闭(为什么?)
谢谢
编辑:
我通过以下方式更改了代码:
buildGroupAccessDialog(groupName);
以及:
private void joinGroup(final String groupName) {
Log.d("TRY TO JOIN GROUP:", groupName);
dialog.show(this, "Joining", "Please wait...");
new Thread(new Runnable() {
@Override
public void run() {
//Get the device
WifiP2pDevice dev = mRecyclerViewFragment.getDeviceMap().get(groupName);
WifiP2pConfig config = new WifiP2pConfig();
config.deviceAddress = dev.deviceAddress;
wifip2pManager.connect(wifiDirectChannel, config, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Log.d("CONNECT", "SUCCESS");
// This is used for avoiding registering another BroadcastListener on purpose, keeping only one but responding
// to intent only when I'm sure I want it
iWantToConnect = true;
// Togli il dialog di progress
dialog.dismiss();
}
@Override
public void onFailure(int reason) {
Log.d("CONNECT", "FAILURE");
//Toast.makeText(getApplication(), "PIPPO", Toast.LENGTH_LONG);
// Togli il dialog di progress
//dialog.dismiss();
// show failure to the user VANNO MESSI NEL BROIASCASTRECEIVER
// refresh peer list
}
});
}
}).start();
}
private void buildGroupAccessDialog(final String groupName) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
this);
// set title
alertDialogBuilder.setTitle("Join group");
// set dialog message
alertDialogBuilder
.setMessage("Do you want to join " + groupName + " ?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//join group
joinGroup(groupName);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
}).create()
.show();
}
现在问题1)解决了,但我仍然无法关闭对话框。
有什么想法吗?