有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java每次我都要改变一些东西来反映

在我的聊天应用程序FriendsFragment中显示为空白。如果我想反映这一点,那么我已经运行了应用程序,在我的应用程序中打开Friends选项卡,在Android studio中即时运行之后,它将反映。如果不行,那么我必须在FriendsFragment中的任意位置添加Log语句,并使用friendsfragmet的open选项卡运行Instant run

为什么我要告诉你添加日志语句是必要的,因为我发现这个错误,每当我在我的朋友片段上更改某些内容,然后运行Instant run时,只有它会显示片段部分。我每次都得这么做,否则就看不出来了。添加日志语句并删除第二次,或者更改标签或更改消息,做一些更改,并且必须运行Instant run(黄色符号,如booster)

注意:我仍然在做这件事,我自己观察到这个问题,我也不知道为什么每次我都要改变一些东西来显示这个片段?我还在同一个应用程序中构建了类似的片段,但这没有问题

FriendFragment

package com.jimmytrivedi.lapitchat;

import 安卓.content.Context;
import 安卓.content.DialogInterface;
import 安卓.content.Intent;
import 安卓.os.Bundle;
import 安卓.support.annotation.NonNull;
import 安卓.support.v4.app.Fragment;
import 安卓.support.v7.app.AlertDialog;
import 安卓.support.v7.widget.LinearLayoutManager;
import 安卓.support.v7.widget.RecyclerView;
import 安卓.util.Log;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.view.ViewGroup;
import 安卓.widget.ImageView;
import 安卓.widget.TextView;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;

import de.hdodenhof.circleimageview.CircleImageView;

public class FriendsFragment extends Fragment {

    private RecyclerView FriendRecyclerView;
    private DatabaseReference databaseReference, UsersDatabaseReference;
    private FirebaseAuth mAuth;
    private String currentUID;
    private View MainView;


    public FriendsFragment() {
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        MainView = inflater.inflate(R.layout.fragment_friend, container, false);
        FriendRecyclerView = MainView.findViewById(R.id.FriendRecyclerView);
        mAuth = FirebaseAuth.getInstance();

        if (mAuth.getCurrentUser() != null) {
            currentUID = mAuth.getCurrentUser().getUid();
            databaseReference = FirebaseDatabase.getInstance().getReference().child("Friends").child(currentUID);
            databaseReference.keepSynced(true);
            UsersDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users");
            UsersDatabaseReference.keepSynced(true);
        }

        FriendRecyclerView.setHasFixedSize(true);
        FriendRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
           Log.d("wihddiewd", "Is it going?");
        return MainView;
    }

    @Override
    public void onStart() {
        super.onStart();

        Query query = FirebaseDatabase.                                                                                                                                                                                                                                                                                                         getInstance()
                .getReference()
                .child("Friends")
                .limitToLast(50);

        FirebaseRecyclerOptions<Friends> options = new FirebaseRecyclerOptions.Builder<Friends>()
                .setQuery(query, Friends.class)
                .build();

        final FirebaseRecyclerAdapter<Friends, FriendsViewHolder> FriendsRecyclerViewAdapter = new
                FirebaseRecyclerAdapter<Friends, FriendsViewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull final FriendsViewHolder holder, int position, @NonNull Friends model) {
                        holder.setDate(model.getDate());

                        final String listUID = getRef(position).getKey();
                        UsersDatabaseReference.child(listUID).addValueEventListener(new ValueEventListener() {
                            @Override
                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                                final String userName = dataSnapshot.child("Name").getValue().toString();
                                String thumbImage = dataSnapshot.child("thumbImage").getValue().toString();
                                String userOnline = dataSnapshot.child("Online").getValue().toString();

                                holder.setName(userName);
                                holder.setThumbImage(thumbImage, getContext());
                                holder.setUserOnline(userOnline);
                                holder.mView.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View v) {
                                        CharSequence options[] = new CharSequence[]{"Open profile", "Send message"};

                                        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
                                        builder.setTitle("Select Options");
                                        builder.setItems(options, new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                if (which == 0) {
                                                    Intent intent = new Intent(getContext(), ProfileActivity.class);
                                                    intent.putExtra("userID", listUID);
                                                    startActivity(intent);
                                                }

                                                if (which == 1) {
                                                    Intent intent = new Intent(getContext(), ChatActivity.class);
                                                    intent.putExtra("userID", listUID);
                                                    intent.putExtra("userName", userName);
                                                    startActivity(intent);
                                                }
                                            }
                                        });

                                        builder.show();
                                    }
                                });

                            }

                            @Override
                            public void onCancelled(@NonNull DatabaseError databaseError) {

                            }

                        });
                    }

                    @NonNull
                    @Override
                    public FriendsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.users_single_layout, parent, false);
                        return new FriendsViewHolder(view);
                    }
                };


        FriendRecyclerView.setAdapter(FriendsRecyclerViewAdapter);
        FriendsRecyclerViewAdapter.startListening();

    }

    public static class FriendsViewHolder extends RecyclerView.ViewHolder {

        View mView;

        public FriendsViewHolder(View itemView) {
            super(itemView);
            mView = itemView;
        }

        public void setDate(String date) {
            TextView userStatusView = mView.findViewById(R.id.userStatus);
            userStatusView.setText(date);
        }

        public void setName(String name) {
            TextView userNameView = mView.findViewById(R.id.userName);
            userNameView.setText(name);
        }

        public void setThumbImage(String thumbImage, Context context) {
            CircleImageView circleImageView = mView.findViewById(R.id.userImage);
            Picasso.get().load(thumbImage).placeholder(R.drawable.defaultimage)
                    .into(circleImageView);
        }

        public void setUserOnline(String online) {
            ImageView userOnline = mView.findViewById(R.id.online);
            if (online.equals("true")) {
                userOnline.setVisibility(View.VISIBLE);
            } else {
                userOnline.setVisibility(View.INVISIBLE);
            }
        }
    }
}

更新

我知道这是一只奇怪的虫子。但基本上,当我打开我的应用程序和应用程序内的firends选项卡(FriendsFragment.java)时,它显示为空白。所以我试着调试我的代码是否有错误?但我没找到。但在调试时,当我在我的移动应用程序中转到我的firends选项卡,并在Android Studio中放置任何日志语句时(因为当我添加/删除某个内容时,Android Studio将了解发生了一些更改,然后我运行Instant run(非正常运行),FriendFragment将反映并显示用户列表)

我必须每次都这样做(意味着我必须添加一些东西/删除一些东西,考虑Android工作室的更改),然后只有FieldScript会显示用户列表。即使我没有打开我的朋友标签,但在应用程序中打开其他东西,而不是运行(即时运行),这也不起作用!只有当我进入friends标签(当时显示为空白,但这没关系)并运行Instant run时,它才会反映

fragment_朋友。xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    xmlns:tools="http://schemas.安卓.com/tools"
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent"
    tools:context=".FriendsFragment">

    <安卓.support.v7.widget.RecyclerView
        安卓:id="@+id/FriendRecyclerView"
        安卓:layout_width="match_parent"
        安卓:layout_height="wrap_content">
    </安卓.support.v7.widget.RecyclerView>


</RelativeLayout>

用户使用单一布局。xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    安卓:layout_width="match_parent"
    安卓:layout_height="wrap_content">

    <de.hdodenhof.circleimageview.CircleImageView
        安卓:id="@+id/userImage"
        安卓:layout_width="64dp"
        安卓:layout_height="64dp"
        安卓:layout_marginBottom="15dp"
        安卓:layout_marginLeft="15dp"
        安卓:layout_marginTop="15dp"
        安卓:src="@drawable/defaultimage" />

    <TextView
        安卓:id="@+id/userName"
        安卓:layout_width="wrap_content"
        安卓:layout_height="wrap_content"
        安卓:layout_alignParentStart="true"
        安卓:layout_alignTop="@+id/userImage"
        安卓:layout_marginStart="99dp"
        安卓:text="Display Name"
        安卓:textColor="#000000"
        安卓:textSize="18dp" />

    <TextView
        安卓:id="@+id/userStatus"
        安卓:layout_width="wrap_content"
        安卓:layout_height="wrap_content"
        安卓:layout_alignStart="@+id/userName"
        安卓:layout_below="@+id/userName"
        安卓:text="User default Status"
        安卓:textSize="15dp" />

    <ImageView
        安卓:id="@+id/online"
        安卓:layout_width="8dp"
        安卓:layout_height="wrap_content"
        安卓:layout_alignTop="@+id/userName"
        安卓:layout_marginLeft="10dp"
        安卓:layout_toEndOf="@+id/userName"
        安卓:visibility="invisible"
        安卓:src="@drawable/online" />

</RelativeLayout>

另一个片段(片段,与此类似,工作非常好)

聊天片段。爪哇

package com.jimmytrivedi.lapitchat;


import 安卓.content.Context;
import 安卓.content.Intent;
import 安卓.graphics.Typeface;
import 安卓.os.Bundle;
import 安卓.support.annotation.NonNull;
import 安卓.support.annotation.Nullable;
import 安卓.support.v4.app.Fragment;
import 安卓.support.v7.widget.LinearLayoutManager;
import 安卓.support.v7.widget.RecyclerView;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.view.ViewGroup;
import 安卓.widget.ImageView;
import 安卓.widget.TextView;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;

import de.hdodenhof.circleimageview.CircleImageView;


public class ChatFragment extends Fragment {

    private RecyclerView ConversationList;
    private DatabaseReference ConversationRef, MessageRef, UserRef;
    private FirebaseAuth mAuth;
    private String currentUID;
    private View MainView;

    public ChatFragment() {
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        MainView = inflater.inflate(R.layout.fragment_chat, container, false);
        ConversationList = MainView.findViewById(R.id.ConversationList);
        mAuth = FirebaseAuth.getInstance();
        currentUID = mAuth.getCurrentUser().getUid();

        ConversationRef = FirebaseDatabase.getInstance().getReference().child("Chat").child(currentUID);
        ConversationRef.keepSynced(true);

        UserRef = FirebaseDatabase.getInstance().getReference().child("Users");
        UserRef.keepSynced(true);

        MessageRef = FirebaseDatabase.getInstance().getReference().child("Messages").child(currentUID);

        LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
        layoutManager.setReverseLayout(true);
        layoutManager.setStackFromEnd(true);

        ConversationList.setHasFixedSize(true);
        ConversationList.setLayoutManager(layoutManager);

        return MainView;
    }

    @Override
    public void onStart() {
        super.onStart();
        Query conversationQuery = ConversationRef.orderByChild("timestamp");

        Query query = FirebaseDatabase.getInstance()
                .getReference()
                .child("Chat")
                .limitToLast(50);

        FirebaseRecyclerOptions<Conversation> options = new FirebaseRecyclerOptions.Builder<Conversation>()
                .setQuery(query, Conversation.class)
                .build();

        FirebaseRecyclerAdapter<Conversation, ConversationViewHolder> ConversationRecyclerViewAdapter = new
                FirebaseRecyclerAdapter<Conversation, ConversationViewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull final ConversationViewHolder holder, int position, @NonNull final Conversation model) {
                        final String listUID = getRef(position).getKey();

                        Query lastMessageQuery = MessageRef.child(listUID).limitToLast(1);

                        lastMessageQuery.addChildEventListener(new ChildEventListener() {
                            @Override
                            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                                String data = dataSnapshot.child("message").getValue().toString();
                                holder.setMassage(data, model.isSeen());
                            }

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

                            }

                            @Override
                            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

                            }

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

                            }

                            @Override
                            public void onCancelled(@NonNull DatabaseError databaseError) {

                            }
                        });

                        UserRef.child(listUID).addValueEventListener(new ValueEventListener() {
                            @Override
                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                final String userName = dataSnapshot.child("Name").getValue().toString();
                                String userThumb = dataSnapshot.child("thumbImage").getValue().toString();

                                if (dataSnapshot.hasChild("Online")) {
                                    String userOnline = dataSnapshot.child("Online").getValue().toString();
                                    holder.setUserOnline(userOnline);
                                }

                                holder.setName(userName);
                                holder.setUserImage(userThumb, getContext());

                                holder.mView.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View v) {
                                        Intent intent = new Intent(getContext(), ChatActivity.class);
                                        intent.putExtra("userID", listUID);
                                        intent.putExtra("userName", userName);
                                        startActivity(intent);
                                    }
                                });
                            }

                            @Override
                            public void onCancelled(@NonNull DatabaseError databaseError) {

                            }
                        });

                    }

                    @NonNull
                    @Override
                    public ConversationViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.users_single_layout, parent, false);
                        return new ConversationViewHolder(view);
                    }
                };

        ConversationList.setAdapter(ConversationRecyclerViewAdapter);
        ConversationRecyclerViewAdapter.startListening();
    }


    public static class ConversationViewHolder extends RecyclerView.ViewHolder {

        View mView;

        public ConversationViewHolder(View itemView) {
            super(itemView);
            mView = itemView;
        }

        public void setMassage(String message, boolean isSeen) {
            TextView userStatusView = mView.findViewById(R.id.userStatus);
            userStatusView.setText(message);

            if (!isSeen) {
                userStatusView.setTypeface(userStatusView.getTypeface(), Typeface.BOLD);
            } else {
                userStatusView.setTypeface(userStatusView.getTypeface(), Typeface.NORMAL);
            }
        }


        public void setUserOnline(String online) {
            ImageView userOnlineView = mView.findViewById(R.id.online);

            if (online.equals("true")) {
                userOnlineView.setVisibility(View.VISIBLE);
            } else {
                userOnlineView.setVisibility(View.INVISIBLE);
            }
        }

        public void setName(String userName) {
            TextView userNameView = mView.findViewById(R.id.userName);
            userNameView.setText(userName);
        }

        public void setUserImage(String userThumb, Context context) {
            CircleImageView userImageView = mView.findViewById(R.id.userImage);
            Picasso.get().load(userThumb).placeholder(R.drawable.defaultimage).into(userImageView);
        }
    }
}

朋友。java

package com.jimmytrivedi.lapitchat;

public class Friends {

    public String date;

    public Friends() {
    }

    public Friends(String date) {
        this.date = date;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }
}

第页雷达。java

package com.jimmytrivedi.lapitchat;

import 安卓.support.annotation.Nullable;
import 安卓.support.v4.app.Fragment;
import 安卓.support.v4.app.FragmentManager;
import 安卓.support.v4.app.FragmentPagerAdapter;

class SectionsPagerAdapter extends FragmentPagerAdapter {
    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                RequestFragment requestFragment = new RequestFragment();
                return requestFragment;

            case 1:
                ChatFragment chatFragment = new ChatFragment();
                return chatFragment;

            case 2:
                FriendsFragment friendFragment = new FriendsFragment();
                return friendFragment;

            default:
                return null;
        }

    }

    @Override
    public int getCount() {
        return 3;
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return "Requests";

            case 1:
                return "Chats";

            case 2:
                return "Friends";

            default:
                return null;
        }
    }
}

主要活动。java

package com.jimmytrivedi.lapitchat;

import 安卓.content.Intent;
import 安卓.os.Bundle;
import 安卓.support.design.widget.TabLayout;
import 安卓.support.v4.view.ViewPager;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.support.v7.widget.Toolbar;
import 安卓.view.Menu;
import 安卓.view.MenuItem;

import com.facebook.login.LoginManager;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ServerValue;

public class MainActivity extends AppCompatActivity {

    private FirebaseAuth mAuth;
    private FirebaseUser currentUser;
    private Toolbar toolbar;
    private ViewPager viewPager;
    private SectionsPagerAdapter sectionsPagerAdapter;
    private TabLayout tabLayout;
    private DatabaseReference UserDatabaseReference;

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

        mAuth = FirebaseAuth.getInstance();
        currentUser = mAuth.getCurrentUser();

        if (currentUser == null) {
            sendTostart();
        } else {
            UserDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(mAuth.getCurrentUser().getUid());
            UserDatabaseReference.child("Online").setValue("true");
        }

        viewPager = findViewById(R.id.viewPager);
        sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        viewPager.setAdapter(sectionsPagerAdapter);

        toolbar = findViewById(R.id.mainToolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("Home");

        tabLayout = findViewById(R.id.tabLayout);
        tabLayout.setupWithViewPager(viewPager);
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (currentUser != null) {
            UserDatabaseReference.child("Online").setValue(ServerValue.TIMESTAMP);
        }
    }

    private void sendTostart() {
        startActivity(new Intent(MainActivity.this, StartActivity.class));
        finish();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        super.onOptionsItemSelected(item);

        if (item.getItemId() == R.id.logout) {
            FirebaseAuth.getInstance().signOut();
            LoginManager.getInstance().logOut();
            sendTostart();
        }

        if (item.getItemId() == R.id.settings) {
            startActivity(new Intent(MainActivity.this, SettingsActivity.class));
        }

        if (item.getItemId() == R.id.allUsers) {
            startActivity(new Intent(MainActivity.this, UsersActivity.class));
        }

        return true;
    }
}

共 (0) 个答案