Android 安卓-为什么它会返回到第一个活动

Android 安卓-为什么它会返回到第一个活动,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在开发一个使用Firebase作为数据库的聊天应用程序。 在应用程序中,我有3个活动:LoginActivity、MainActivity和chatActivity。 在Main活动中,我可以打开聊天室,然后进入聊天室。 然后打开聊天室活动。 在聊天活动中,用户可以互相发送消息。我的问题是。当用户键入信息并按send时。由于某种原因,当用户按下发送按钮时,它会跳转到mainActivity实例并发送消息。我不知道发生了什么,我需要你们的帮助 主要活动代码 package com.wo

我正在开发一个使用Firebase作为数据库的聊天应用程序。 在应用程序中,我有3个活动:LoginActivity、MainActivity和chatActivity。 在Main活动中,我可以打开聊天室,然后进入聊天室。 然后打开聊天室活动。 在聊天活动中,用户可以互相发送消息。我的问题是。当用户键入信息并按send时。由于某种原因,当用户按下发送按钮时,它会跳转到mainActivity实例并发送消息。我不知道发生了什么,我需要你们的帮助

主要活动代码

    package com.world.bolandian.firebase;


 public class MainActivity extends AppCompatActivity {

private Button createChat;
private EditText chatRoomName;
private ListView listView;
private ArrayAdapter<String> arrayAdapter;
private ArrayList<String> listOfChats = new ArrayList<>();
private String name;
private DatabaseReference root  = FirebaseDatabase.getInstance().getReference().getRoot();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
       ifUserIsLoggedIn();

    createChat = (Button)findViewById(R.id.createChatBtn);
    chatRoomName = (EditText)findViewById(R.id.chatRoomEt);
    listView = (ListView)findViewById(R.id.listView);

    arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, listOfChats);

    listView.setAdapter(arrayAdapter);

    enterUserName();

    createChat.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Map<String, Object> map = new HashMap<String, Object>();
            map.put(chatRoomName.getText().toString(), "");
            root.updateChildren(map);
        }
    });

    root.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            Set<String> set = new HashSet<String>();
            Iterator i = dataSnapshot.getChildren().iterator();

            while (i.hasNext()) {
                set.add(((DataSnapshot) i.next()).getKey());
            }
            listOfChats.clear();
            listOfChats.addAll(set);
            arrayAdapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            Intent intent = new Intent(getApplicationContext(),ChatRoom.class);
            intent.putExtra("roomName",((TextView)view).getText().toString());
            intent.putExtra("userName",name);
            startActivity(intent);
        }
    });


      }


private void ifUserIsLoggedIn(){

    FirebaseAuth auth = FirebaseAuth.getInstance();
    FirebaseUser user = auth.getCurrentUser();
    if(user != null){

    }
    else
        startActivity(new Intent(this,LoginActivity.class));
}


    private void enterUserName(){

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Please enter A nick name:");

       final EditText input = new EditText(this);

        builder.setView(input);
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                name = input.getText().toString();
            }
        });

        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
                enterUserName();
            }
        });
        builder.show();
     }

   }
package com.world.bolandian.firebase;
公共类MainActivity扩展了AppCompatActivity{
私人按钮创建聊天;
私人编辑文本聊天室名称;
私有列表视图列表视图;
专用阵列适配器阵列适配器;
private ArrayList listOfChats=new ArrayList();
私有字符串名称;
private DatabaseReference root=FirebaseDatabase.getInstance().getReference().getRoot();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ifUserIsLoggedIn();
createChat=(按钮)findViewById(R.id.createChatBtn);
聊天室名称=(EditText)findViewById(R.id.chatRoomEt);
listView=(listView)findViewById(R.id.listView);
arrayAdapter=新的arrayAdapter(这是android.R.layout.simple\u下拉列表\u项目\u 1行,列表框);
setAdapter(arrayAdapter);
enterUserName();
createChat.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Map Map=newhashmap();
map.put(chatRoomName.getText().toString(),“”);
root.updateChildren(map);
}
});
root.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
Set=newhashset();
迭代器i=dataSnapshot.getChildren().Iterator();
while(i.hasNext()){
set.add(((DataSnapshot)i.next()).getKey());
}
listOfChats.clear();
addAll列表(集合);
arrayAdapter.notifyDataSetChanged();
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Intent Intent=newintent(getApplicationContext(),ChatRoom.class);
intent.putExtra(“roomName”,((TextView)视图).getText().toString());
intent.putExtra(“用户名”,名称);
星触觉(意向);
}
});
}
私有void ifUserIsLoggedIn(){
FirebaseAuth auth=FirebaseAuth.getInstance();
FirebaseUser=auth.getCurrentUser();
如果(用户!=null){
}
其他的
startActivity(新意图(这个,LoginActivity.class));
}
私有void enterUserName(){
AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setTitle(“请输入昵称:”);
最终编辑文本输入=新编辑文本(本);
builder.setView(输入);
setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
name=input.getText().toString();
}
});
setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
@凌驾
public void onClick(DialogInterface dialog,int which){
dialog.cancel();
enterUserName();
}
});
builder.show();
}
}
这是聊天活动

  public class ChatRoom extends AppCompatActivity {

private Button sendMessageBtn;
private EditText inputMsg;
private TextView showMessage;
private DatabaseReference root;
private String userName,chatName,tempKey;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat_room);


    sendMessageBtn = (Button)findViewById(R.id.sendmessagebtn);
    inputMsg = (EditText)findViewById(R.id.messageEt);
    showMessage = (TextView)findViewById(R.id.showMessage);

    userName = getIntent().getExtras().get("userName").toString();
    chatName = getIntent().getExtras().get("roomName").toString();
    Log.v("username",userName);
    Log.v("chatname",chatName);

    setTitle(" Room " + chatName);

    root = FirebaseDatabase.getInstance().getReference().child(chatName);

    sendMessageBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Map<String,Object> map = new HashMap<String, Object>();
            tempKey = root.push().getKey();
            root.updateChildren(map);

            DatabaseReference messageRoot = root.child(tempKey);
            Map<String,Object> map2 = new HashMap<String, Object>();
            map2.put("name",userName);
            map2.put("message",inputMsg);

            messageRoot.updateChildren(map2);
        }
    });


    root.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

            chatConversation(dataSnapshot);
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            chatConversation(dataSnapshot);
        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}

private String chatMsg,chatUserName;

private void chatConversation(DataSnapshot dataSnapshot){

    Iterator i = dataSnapshot.getChildren().iterator();
        while(i.hasNext()){
            chatMsg = (String)((DataSnapshot)i.next()).getValue();
            chatUserName = (String)((DataSnapshot)i.next()).getValue();

            showMessage.append(chatUserName + " : " + chatMsg +"\n" );
        }
    }
 }
公共类聊天室扩展AppCompative活动{
私人按钮发送消息;
私有编辑文本输入消息;
私有文本视图显示消息;
私有数据库引用根;
私有字符串用户名、聊天室名称、临时密钥;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u chat\u room);
sendMessageBtn=(按钮)findViewById(R.id.sendMessageBtn);
inputMsg=(EditText)findViewById(R.id.messageEt);
showMessage=(TextView)findViewById(R.id.showMessage);
userName=getIntent().getExtras().get(“用户名”).toString();
chatName=getIntent().getExtras().get(“roomName”).toString();
Log.v(“用户名”,用户名);
Log.v(“chatname”,chatname);
设置标题(“房间”+聊天室名称);
root=FirebaseDatabase.getInstance().getReference().child(chatName);
sendMessageBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Map Map=newhashmap();
tempKey=root.push().getKey();
root.updateChildren(map);
DatabaseReference messageRoot=root.child(tempKey);
Map map2=新的HashMap();
map2.put(“名称”,用户名);
map2.put(“消息”,inputMsg);
messageRoot.updateChildren(map2);
}
});
root.addChildEventListener(新的ChildEventListener(){
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
聊天对话(dataSnapshot);
}
@凌驾
公共void onChildChanged(DataSnapshot DataSnapshot,字符串s){
聊天对话(dataSnapshot);
}
@凌驾
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
}
@凌驾
已移动ChildMoved上的公共void(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
私有字符串chatMsg,chatUserName;
私有void聊天会话(DataSnapshot DataSnapshot){
迭代器i=
        DatabaseReference messageRoot = root.child(tempKey);
        Map<String,Object> map2 = new HashMap<String, Object>();
        map2.put("name",userName);
        map2.put("message",inputMsg); -- thats the line that crash the app

       **map2.put("message",inputMsg.getText().toString());** should be like that

        messageRoot.updateChildren(map2);