@人是聊天中常见功能,能在聊天过程中提醒某人关注聊天消息,主要用于群聊
下面介绍一种简易实现该功能的方法
//首先,界面中应该有一个EditText的输入框
private EditText input;
input = this.findViewById(R.id.msg_input);
//为该EditText设置文本变化监听
input.addTextChangedListener(new EditChangedListener());
//主要功能在EditChangedListener类中实现
class EditChangedLister implements TextWather{
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// Log.e(TAG, "输入文本之前的状态");
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Log.e(TAG, "输入文字中的状态,count是一次性输入字符数");
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
//获取输入字符串中的最后一个字符
char inputCharacter = s.charAt(s.length()-1);
//判断是否是“@”
if (inputCharacter == '@') {
//跳转到群成员列表页
Circle mCircle =new CircleService(MessageActivity.this).getCircleFromDB(receiver);
Intent intent = new Intent(MessageActivity.this, CircleMemberListActivity.class);
startActivityForResult(intent, REQUEST_CODE_AT);
overridePendingTransition(R.anim.main_move_in,
R.anim.login_move_out);
}
}
}
}
//显示群成员列表的页面此处省略,在群成员列表页面选中一个需要@的成员,返回到聊天页面,进入onActivityResult函数
protected void onActivityResult(int requestCode,int resultCode,Intent data){
if(requestCode == REQUEST_CODE_AT && resultCode == AT_RESULT_OK){
//获取到被@人的昵称
String name_at = data.getStringExtra("name");
//追加到输入框中
input.getText.append(name_at);
}
}
tip:在选择群成员的页面中的主要操作为返回被选中的成员名,可用以下方法实现
Intent intent_at = new Intent();
intent_at.putExtra("name", contact.getName());
setResult(AT_RESULT_OK, intent_at);
this.finish();