Возникла проблема при касании пользователя, чтобы начать общаться - PullRequest
1 голос
/ 06 марта 2020

У меня возникла проблема при открытии контакта со страницы моего списка контактов, он работал нормально, но когда я прикасаюсь к пользователю, чтобы открыть активность сообщений, поэтому он должен начать общаться там.

Это моя активность сообщений :

public class MessageActivity extends AppCompatActivity {

    CircleImageView imageView;

    FirebaseUser firebaseUser;
    DatabaseReference reference;

    Intent intent;

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

        final Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

        imageView = findViewById(R.id.profile_image);

        intent = getIntent();
        String userid = intent.getStringExtra("userid");

        firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        reference = FirebaseDatabase.getInstance().getReference("parent").child(userid);

        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                User user = dataSnapshot.getValue(User.class);

                if (user.getImageURL().equals("default")) {
                    imageView.setImageResource(R.drawable.ic_user);
                }else {
                    Glide.with(MessageActivity.this).load(user.getImageURL()).into(imageView);
                }
            }

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

            }
        });
    }
}

И это намерение, к которому я обращался:

holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context, MessageActivity.class);
                intent.putExtra("userid", user.getId());
                context.startActivity(intent);
            }
        });

Это мой logcat, когда я запускаю приложение:

2020-05-01 20:39:12.857 12974-12974/net.gobz.gobz E/AndroidRuntime: FATAL EXCEPTION: main
    Process: net.gobz.gobz, PID: 12974
    android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
        at android.app.ContextImpl.startActivity(ContextImpl.java:994)
        at android.app.ContextImpl.startActivity(ContextImpl.java:970)
        at android.content.ContextWrapper.startActivity(ContextWrapper.java:389)
        at net.gobz.gobz.Adapter.UserAdapter$1.onClick(UserAdapter.java:54)

1 Ответ

1 голос
/ 01 мая 2020

После прочтения вашего logcat, который говорит о том, что вы должны использовать флаги для своей IntentActivity, попробуйте заменить ваш код этим.

    holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context, MessageActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|
                Intent.FLAG_ACTIVITY_CLEAR_TASK | 
                Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.putExtra("userid", user.getId());
                context.startActivity(intent);
            }
        });
...