我们需要的完成的功能有:

第一:根据是否公开的CheckBox的状态来判断开放群成员邀请的布局是否可见;

第二:当点击保存按钮的时候,判断群的名称是否为空,如果为空,则进行提示,否则进入选择群聊联系人的界面(将群组名称传进去)勾选联系人;

第三:当在选择联系人界面勾选好了联系人之后,将这些数据返回给本Activity,然后进行创建群组;

第四:根据CheckBox的选中状态判断是创建公开群还是私有群;

第五:创建群组失败则进行提示用户创建群组失败了;

第六:返回按钮的点击事件。

我们一一解决:

第一:根据是否公开的CheckBox的状态来判断开放群成员邀请的布局是否可见:

checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

			@Override
			public void onCheckedChanged(CompoundButton buttonView,
					boolean isChecked) {
				if (isChecked) {
					openInViteContainer.setVisibility(View.INVISIBLE);
				} else {
					openInViteContainer.setVisibility(View.VISIBLE);
				}
			}
		});



选中的时候是创建公开群,那么此时默认支持群成员邀请:


新建一个redis 新建一个群_android

第二:当点击保存按钮的时候,判断群的名称是否为空,如果为空,则进行提示,否则进入选择群聊联系人的界面(将群组名称传进去)勾选联系人;




/**
	 * 
	 * 保存按钮的点击事件
	 * 
	 * @param view
	 */
	public void save(View view) {
		String name = groupNameEditText.getText().toString().trim();
		// 群名称为空的情况下
		if (TextUtils.isEmpty(name)) {
			Intent intent = new Intent(this, AlertDialog.class);
			intent.putExtra("msg", "群聊名称不能为空");
			startActivity(intent);
		} else {
			// 进通讯录选择联系人
			startActivityForResult(
					new Intent(this, GroupPickContactsActivity.class).putExtra(
							"groupName", name), 0);

		}

	}

第三:当在选择联系人界面勾选好了联系人之后,将这些数据返回给本Activity,然后进行创建群组;


// 进通讯录选择联系人
			startActivityForResult(
					new Intent(this, GroupPickContactsActivity.class).putExtra(
							"groupName", name), 0);

第四:根据CheckBox的选中状态判断是创建公开群还是私有群;



// 选中状态,创建公开群
						if (checkBox.isChecked()) {
							// 创建公开群,此种方式创建的群,用户需要申请,等群主同意后才能加入此群
							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();
								Toast.makeText(NewGroupActivity.this,
										"创建群组失败:" + e.getLocalizedMessage(),
										Toast.LENGTH_LONG).show();

							}
						});



第六:返回按钮的点击事件。



public void back(View view) {

		finish();
	}




整个的代码如下:

package com.dy.ustc.im.ui;

import com.dy.ustc.im.GroupPickContactsActivity;
import com.dy.ustc.im.R;
import com.dy.ustc.im.R.layout;
import com.easemob.chat.EMGroupManager;
import com.easemob.exceptions.EaseMobException;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

public class NewGroupActivity extends Activity {

	private EditText groupNameEditText;// 群聊名称

	private ProgressDialog progressDialog;// 创建群聊时的pd

	private EditText introductionEditText;// 群聊简介

	private CheckBox checkBox;// 是否公开群

	private CheckBox memberCheckBox;// 是否开放群成员邀请

	private LinearLayout openInViteContainer;// 开放群成员邀请的线性布局

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_new_group);

		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);

		checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

			@Override
			public void onCheckedChanged(CompoundButton buttonView,
					boolean isChecked) {
				if (isChecked) {
					openInViteContainer.setVisibility(View.INVISIBLE);
				} else {
					openInViteContainer.setVisibility(View.VISIBLE);
				}
			}
		});

	}

	/**
	 * 
	 * 保存按钮的点击事件
	 * 
	 * @param view
	 */
	public void save(View view) {
		String name = groupNameEditText.getText().toString().trim();
		// 群名称为空的情况下
		if (TextUtils.isEmpty(name)) {
			Intent intent = new Intent(this, AlertDialog.class);
			intent.putExtra("msg", "群聊名称不能为空");
			startActivity(intent);
		} else {
			// 进通讯录选择联系人
			startActivityForResult(
					new Intent(this, GroupPickContactsActivity.class).putExtra(
							"groupName", name), 0);

		}

	}

	@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, 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();

		}

	}

	/**
	 * 
	 * 返回按钮的点击事件
	 * 
	 * @param view
	 */
	public void back(View view) {

		finish();
	}

}