54新建群聊逻辑的完成

需要实现的有:

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必须放在主线程中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值