Java 如何使用onClick将用户发送到ChatActivity
我正在创建聊天应用程序,并向用户显示他们的联系人。现在,用户可以看到他们所有联系人的图像名称和状态。但当用户点击联系人时,我希望他们进入聊天活动。现在我被困住了,因为我不知道如何给他们发邮件 我试过这个Java 如何使用onClick将用户发送到ChatActivity,java,android,onclick,onclicklistener,Java,Android,Onclick,Onclicklistener,我正在创建聊天应用程序,并向用户显示他们的联系人。现在,用户可以看到他们所有联系人的图像名称和状态。但当用户点击联系人时,我希望他们进入聊天活动。现在我被困住了,因为我不知道如何给他们发邮件 我试过这个 mAuth.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); 但是它不起作用,setOnClic
mAuth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
但是它不起作用,setOnClickListener
是红色的。有人能帮忙吗
编辑
我尝试了以下两个答案,但都没有帮到我。当我把这些积木
class chatLink implements View.OnClickListener {
@Override
public void onClick(View v) {
SendUserToChatActivity();
}
}
private void SendUserToChatActivity() {
Intent mainIntent = new Intent(ContactsFragment.this, MainActivity.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(mainIntent);
finish();
}
我在这里得到一条红线Intent maintent=newintent(ContactsFragment.this,MainActivity.class)代码>
这是更新后的代码(我仍在试图找到一种方法)
私人查看联系人视图;
私人回收站查看myContactsList;
私有数据库引用ContacsRef,UsersRef;
私人消防队;
私有字符串currentUserID;
公共联系人片段(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
ContactsView=充气机。充气(R.layout.fragment_触点,容器,假);
myContactsList=(RecyclerView)ContactsView.findViewById(R.id.contacts\u列表);
setLayoutManager(新的LinearLayoutManager(getContext());
mAuth=FirebaseAuth.getInstance();
currentUserID=mAuth.getCurrentUser().getUid();
ContacsRef=FirebaseDatabase.getInstance().getReference().child(“联系人”).child(currentUserID);
UsersRef=FirebaseDatabase.getInstance().getReference().child(“用户”);
返回联系人视图;
}
@凌驾
public void onStart(){
super.onStart();
FirebaseRecyclerOptions选项=
新的FirebaseRecyclerOptions.Builder()
.setQuery(ContacsRef,Contacts.class)
.build();
FirebaseRecyclerAdapter适配器
=新的FirebaseRecyclerAdapter(选项){
@凌驾
受保护的无效onBindViewHolder(@NonNull最终联系人VIEWHOLDER holder,int位置,@NonNull联系人模型){
字符串userid=getRef(position).getKey();
UsersRef.child(userid).addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
if(dataSnapshot.exists()){
if(dataSnapshot.child(“userState”).hasChild(“state”)){
字符串状态=(dataSnapshot.child(“userState”).child(“state”)).getValue().toString();
字符串日期=(dataSnapshot.child(“userState”).child(“date”).getValue().toString();
字符串时间=(dataSnapshot.child(“userState”).child(“time”)).getValue().toString();
if(state.equals(“在线”)){
holder.onlineIcon.setVisibility(View.VISIBLE);
}
else if(state.equals(“脱机”)){
holder.onlineIcon.setVisibility(视图.不可见);
}
}否则{
holder.userStatus.setText(“脱机”);
}
if(dataSnapshot.hasChild(“图像”)){
字符串userImage=dataSnapshot.child(“image”).getValue().toString();
String profileName=dataSnapshot.child(“name”).getValue().toString();
字符串profileStatus=dataSnapshot.child(“status”).getValue().toString();
holder.userName.setText(profileName);
holder.userStatus.setText(profileStatus);
Picasso.get().load(userImage).placeholder(R.drawable.profile\u image).into(holder.profileImage);
}
否则{
String profileName=dataSnapshot.child(“name”).getValue().toString();
字符串profileStatus=dataSnapshot.child(“status”).getValue().toString();
holder.userName.setText(profileName);
holder.userStatus.setText(profileStatus);
}
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
@非空
@凌驾
公共联系人ViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){
View View=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.users\u display\u布局,viewGroup,false);
ContactsViewHolder=新的ContactsViewHolder(视图);
返回视图持有者;
}
类chatLink实现View.OnClickListener{
@凌驾
公共void onClick(视图v){
SendUserToChatActivity();
}
}
私有void SendUserToChatActivity(){
Intent maintent=新的Intent(getApplication(),MainActivity.class);
maintent.addFlags(Intent.FLAG_活动_新任务| Intent.FLAG_活动_清除任务);
星触觉(主旨);
}
};
myContactsList.setAdapter(适配器);
adapter.startListening();
}
公共静态类ContactsViewHolder扩展了RecyclerView.ViewHolder{
TextView用户名、userStatus;
圆形图像查看轮廓图像;
ImageView在线图标;
公共联系人查看文件夹(@NonNull View itemView){
超级(项目视图);
userName=itemView.findviewbyd(R.id.user\u profile\u name);
userStatus=itemView.findviewbyd(R.id.user\u status);
profileImage=itemView.findviewbyd(R.id.users\u profile\u image);
onlineIcon=(ImageVie
private View ContactsView;
private RecyclerView myContactsList;
private DatabaseReference ContacsRef, UsersRef;
private FirebaseAuth mAuth;
private String currentUserID;
public ContactsFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
ContactsView = inflater.inflate(R.layout.fragment_contacts, container, false);
myContactsList = (RecyclerView) ContactsView.findViewById(R.id.contacts_list);
myContactsList.setLayoutManager(new LinearLayoutManager(getContext()));
mAuth = FirebaseAuth.getInstance();
currentUserID = mAuth.getCurrentUser().getUid();
ContacsRef = FirebaseDatabase.getInstance().getReference().child("Contacts").child(currentUserID);
UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");
return ContactsView;
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerOptions options =
new FirebaseRecyclerOptions.Builder<Contacts>()
.setQuery(ContacsRef, Contacts.class)
.build();
FirebaseRecyclerAdapter<Contacts, ContactsViewHolder> adapter
= new FirebaseRecyclerAdapter<Contacts, ContactsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final ContactsViewHolder holder, int position, @NonNull Contacts model) {
String userIDs = getRef(position).getKey();
UsersRef.child(userIDs).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
if(dataSnapshot.child("userState").hasChild("state")){
String state = (dataSnapshot.child("userState").child("state")).getValue().toString();
String date = (dataSnapshot.child("userState").child("date")).getValue().toString();
String time = (dataSnapshot.child("userState").child("time")).getValue().toString();
if(state.equals("online")){
holder.onlineIcon.setVisibility(View.VISIBLE);
}
else if(state.equals("offline")){
holder.onlineIcon.setVisibility(View.INVISIBLE);
}
} else {
holder.userStatus.setText("offline");
}
if(dataSnapshot.hasChild("image")){
String userImage = dataSnapshot.child("image").getValue().toString();
String profileName = dataSnapshot.child("name").getValue().toString();
String profileStatus = dataSnapshot.child("status").getValue().toString();
holder.userName.setText(profileName);
holder.userStatus.setText(profileStatus);
Picasso.get().load(userImage).placeholder(R.drawable.profile_image).into(holder.profileImage);
}
else{
String profileName = dataSnapshot.child("name").getValue().toString();
String profileStatus = dataSnapshot.child("status").getValue().toString();
holder.userName.setText(profileName);
holder.userStatus.setText(profileStatus);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@NonNull
@Override
public ContactsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.users_display_layout, viewGroup, false);
ContactsViewHolder viewHolder = new ContactsViewHolder(view);
return viewHolder;
}
class chatLink implements View.OnClickListener {
@Override
public void onClick(View v) {
SendUserToChatActivity();
}
}
private void SendUserToChatActivity() {
Intent mainIntent = new Intent(getApplication(), MainActivity.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(mainIntent);
}
};
myContactsList.setAdapter(adapter);
adapter.startListening();
}
public static class ContactsViewHolder extends RecyclerView.ViewHolder {
TextView userName, userStatus;
CircleImageView profileImage;
ImageView onlineIcon;
public ContactsViewHolder(@NonNull View itemView) {
super(itemView);
userName = itemView.findViewById(R.id.user_profile_name);
userStatus = itemView.findViewById(R.id.user_status);
profileImage = itemView.findViewById(R.id.users_profile_image);
onlineIcon = (ImageView) itemView.findViewById(R.id.user_online_status);
}
}
import android.view.View.OnClickListener;
class yourClass implements View.OnClickListener {
@Override
public void onClick(View v) {
//Views clicks go here
}
}
Intent mainIntent = new Intent(ContactsFragment.this, MainActivity.class);
Intent mainIntent = new Intent(context, MainActivity.class);
Intent mainIntent = new Intent(MyActivityThatContainsThisFragment, MainActivity.class);
import android.view.View.OnClickListener;
public static class ContactsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
...some other code
ContactsViewHolder(View itemView){
// some code
// setting click listener on complete row
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v){
Intent i = new Intent(v.getContext(),ChatActivity.class);
v.getContext().startActivity(i);
}
class chatLink implements View.OnClickListener {
@Override
public void onClick(View v) {
//Resolve error
// you can also use class of fragment i.e. Fragment.this.getContext()
SendUserToChatActivity(v.getContext());
}
}
private void SendUserToChatActivity(Context ctx) {
Intent mainIntent = new Intent(ctx, MainActivity.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(mainIntent);
finish();
}
Intent mainIntent = new Intent(**getContext()**, MainActivity.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(mainIntent);
finish();
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getContext(), ChatActivity.class);
i.putExtra("visit_user_id", userIDs);
i.putExtra("visit_user_name", profileName);
i.putExtra("visit_image", userImage);
startActivity(i);
}
});
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
ContactsView = inflater.inflate(R.layout.fragment_contacts, container, false);
myContactsList = (RecyclerView) ContactsView.findViewById(R.id.contacts_list);
myContactsList.setLayoutManager(new LinearLayoutManager(getContext()));
mAuth = FirebaseAuth.getInstance();
currentUserID = mAuth.getCurrentUser().getUid();
ContacsRef = FirebaseDatabase.getInstance().getReference().child("Contacts").child(currentUserID);
UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");
return ContactsView;
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerOptions options =
new FirebaseRecyclerOptions.Builder<Contacts>()
.setQuery(ContacsRef, Contacts.class)
.build();
FirebaseRecyclerAdapter<Contacts, ContactsViewHolder> adapter
= new FirebaseRecyclerAdapter<Contacts, ContactsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final ContactsViewHolder holder, final int position, @NonNull Contacts model) {
final String userIDs = getRef(position).getKey();
UsersRef.child(userIDs).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
if (dataSnapshot.child("userState").hasChild("state")) {
String state = (dataSnapshot.child("userState").child("state")).getValue().toString();
String date = (dataSnapshot.child("userState").child("date")).getValue().toString();
String time = (dataSnapshot.child("userState").child("time")).getValue().toString();
if (state.equals("online")) {
holder.onlineIcon.setVisibility(View.VISIBLE);
} else if (state.equals("offline")) {
holder.onlineIcon.setVisibility(View.INVISIBLE);
}
} else {
holder.userStatus.setText("offline");
}
if (dataSnapshot.hasChild("image")) {
userImage = dataSnapshot.child("image").getValue().toString();
profileName = dataSnapshot.child("name").getValue().toString();
profileStatus = dataSnapshot.child("status").getValue().toString();
holder.userName.setText(profileName);
holder.userStatus.setText(profileStatus);
Picasso.get().load(userImage).placeholder(R.drawable.profile_image).into(holder.profileImage);
} else {
profileName = dataSnapshot.child("name").getValue().toString();
profileStatus = dataSnapshot.child("status").getValue().toString();
holder.userName.setText(profileName);
holder.userStatus.setText(profileStatus);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getContext(), ChatActivity.class);
i.putExtra("visit_user_id", userIDs);
i.putExtra("visit_user_name", profileName);
i.putExtra("visit_image", userImage);
startActivity(i);
}
});
}
@NonNull
@Override
public ContactsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.users_display_layout, viewGroup, false);
ContactsViewHolder viewHolder = new ContactsViewHolder(view);
return viewHolder;
}
};
myContactsList.setAdapter(adapter);
adapter.startListening();
}
public static class ContactsViewHolder extends RecyclerView.ViewHolder {
TextView userName, userStatus;
CircleImageView profileImage;
ImageView onlineIcon;
public ContactsViewHolder(@NonNull View itemView) {
super(itemView);
userName = itemView.findViewById(R.id.user_profile_name);
userStatus = itemView.findViewById(R.id.user_status);
profileImage = itemView.findViewById(R.id.users_profile_image);
onlineIcon = (ImageView) itemView.findViewById(R.id.user_online_status);
}
}