Why does click Event in Fragment takes back to the last activity without any such instruction given in the setOnClickListener in Android?

huangapple 未分类评论53阅读模式
英文:

Why does click Event in Fragment takes back to the last activity without any such instruction given in the setOnClickListener in Android?

问题

这个问题是关于之前问题的扩展。首个问题

所以已登录用户和聊天伙伴的名称不再返回空值,并且数据也被插入到 Firebase 中。然而,即使在 sendImgView.setOnClickListener() 函数中没有提供这样的 Intent,在点击事件发生时,setOnClickListener 操作会回到之前的 UsersList.java 活动。

UserList.java 相关代码将会跳转到 ChatActivity,正如您所见,我还在点击事件中使用了 finish()

usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
        // TODO Auto-generated method stub

        Intent goChatActivity = new Intent(UserList.this, ChatActivity.class);

        String currentUser = "Abdul";
        String chatBuddy = "Razzak";

        goChatActivity.putExtra("currentUser", currentUser);
        goChatActivity.putExtra("chatBuddy", chatBuddy);
        startActivity(goChatActivity);
        finish(); // 在这里结束 UsersList
    }
});

而在 SendMsgFragment.java 中,在将数据插入 Firebase 后,我使用了 getActivity().finish();,但是 sendImgView.setOnClickListener 操作却会从我使用 Intent 到达 SendMsgFragment 的地方,将我带回到 UsersList.java。我该如何防止这种情况发生:

SendMsgFragment.java 相关代码如下:

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.send_msg_fragment, container, false);
    sendImgView = (ImageView) view.findViewById(R.id.sendButton);
    sendImgView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            try {
                currentUser = getArguments().getString("currentUser");
                chatBuddy = getArguments().getString("chatBuddy");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            Chat chat = new Chat(chatEditText.getText().toString(), cal.getTime().toString());
            databaseReference.child(currentUser + "/" + currentUser + "_" + chatBuddy).push().setValue(chat);
            chatEditText.setText("");
            getActivity().finish(); // 在这里结束加载此片段的 ChatActivity
        }
    });
    return view;
}
英文:

This question is an extension to previous question over here. First Question

So the logged in user and chatbuddy names are not returning null any more and data is being inserted in firebase as well. However the setOnClickListener action takes back to previous UsersList.java activity even though no such Intent given in sendImgView.setOnClickListener() function.

UserList.java relevant code takes to ChatActivity as you can see and also i finish() it on click-

usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView&lt;?&gt; adapterView, View view, int position, long l) {
            // TODO Auto-generated method stub




           Intent goChatActivity = new Intent(UserList.this, ChatActivity.class);


            String currentUser = &quot;Abdul&quot;;
            String chatBuddy = &quot;Razzak&quot;;

            goChatActivity.putExtra(&quot;currentUser&quot;, currentUser);
            goChatActivity.putExtra(&quot;chatBuddy&quot;, chatBuddy);
            startActivity(goChatActivity);
            finish(); **//finishing UsersList here**

        }
    });

And in the SendMsgFragment.java after inserting data in firebase I do getActivity().finish(); but sendImgView.setOnClickListener action taking back to UsersList.java from where I came to SendMsgFragment using Intent. How do I prevent that from happening -

SendMsgFragment.java relevant code is -

    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        view = inflater.inflate(R.layout.send_msg_fragment, container, false);
        sendImgView = (ImageView) view.findViewById(R.id.sendButton);
   sendImgView.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    currentUser = getArguments().getString(&quot;currentUser&quot;);
                    chatBuddy = getArguments().getString(&quot;chatBuddy&quot;);
                }catch (Exception ex){
                    ex.printStackTrace();
                }
                Chat chat = new Chat(chatEditText.getText().toString(), cal.getTime().toString());
                databaseReference.child(currentUser+&quot;/&quot;+currentUser+&quot;_&quot;+chatBuddy).push().setValue(chat);
                chatEditText.setText(&quot;&quot;);
                getActivity().finish(); //finishing ChatActivity where I load this fragment
            }
        });
        return view;
    }

huangapple
  • 本文由 发表于 2020年5月2日 17:23:31
  • 转载请务必保留本文链接:https://java.coder-hub.com/61557077.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定