需要实现的有:
1.获取布局文件xml对应的实例:
/**
* 群名称
*/
private EditText groupNameEditText;
/**
*
* 对话框
*/
private ProgressDialog progressDialog;
/**
* 群简介
*
*/
private EditText introductionEditText;
/**
* 是否公开的CheckBox
*
*/
private CheckBox checkBox;
/**
* 是否开放群成员邀请的CheckBox
*
*/
private CheckBox memberCheckBox;
/**
* 开放群成员邀请的布局
*
*/
private LinearLayout openInviteContainer;
groupNameEditText = (EditText) findViewById(R.id.edit_group_name);
introductionEditText = (EditText) findViewById(R.id.edit_group_introduction);
checkBox = (CheckBox) findViewById(R.id.cb_public);
memberCheckBox = (CheckBox) findViewById(R.id.cb_member_inviter);
openInviteContainer = (LinearLayout) findViewById(R.id.ll_open_invite);
2.设置CheckBox的点击事件(是否公开的点击事件),当它选择上时,设置开放群成员邀请不可见,否则可见:
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
openInviteContainer.setVisibility(View.INVISIBLE);
} else {
openInviteContainer.setVisibility(View.VISIBLE);
}
}
});
3.保存按钮的点击事件,当点击保存时,如果群组名称为空,弹出对话框提示用户群组名称不能为空,否则,进入选择联系人的界面,并将创建的群组名称返回给我们:
/**
*
* 按钮的点击事件
*
* @param view
*/
public void save(View view) {
String name = groupNameEditText.getText().toString();
if (TextUtils.isEmpty(name)) {
Intent intent = new Intent(this, AlertDialogActivity.class);
intent.putExtra("msg", "群组名称不能为空");
startActivity(intent);
} else {
startActivityForResult(
new Intent(this, GroupPickContactsActivity.class).putExtra(
"groupName", name), 0);
}
}
4.在onActivityResult处理创建的过程:
@Override
protected void onActivityResult(int requestCode, int resultCode,
final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("正在创建群组...");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
new Thread(new Runnable() {
@Override
public void run() {
String groupName = groupNameEditText.getText().toString()
.trim();
String desc = introductionEditText.getText().toString();
String[] members = data.getStringArrayExtra("newmembers");
try {
if (checkBox.isChecked()) {
// 创建公开群,此种方式创建的群,可以自由的加入
EMGroupManager.getInstance().createPublicGroup(
groupName, desc, members, false);
// 创建公开群,此种方式创建的群,需要群主同意后菜可以加入
EMGroupManager.getInstance().createPublicGroup(
groupName, desc, members, true);
} else {
// 创建不公开的群
EMGroupManager.getInstance().createPrivateGroup(
groupName, desc, members,
memberCheckBox.isChecked());
}
runOnUiThread(new Runnable() {
@Override
public void run() {
progressDialog.dismiss();
setResult(RESULT_OK);
finish();
}
});
} catch (final Exception e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
progressDialog.dismiss();
Toast.makeText(NewGroupActivity.this,
"创建群组失败:" + e.getLocalizedMessage(), Toast.LENGTH_LONG)
.show();
}
});
}
}
}).start();
}
}
一定要注意:处理耗时放在子线程中,但是更新UI必须放在主线程中。