Получение ошибки в intent android кто-нибудь, попробуйте решить эту ошибку и помогите мне, проверьте SS, я попробовал три метода решения, но бесполезно

#java #android #firebase #android-intent #android-recyclerview

#java #Android #firebase #android-intent #android-recyclerview

Вопрос:

введите описание изображения здесьВ FirebaseAdapter я создал представление для intent в ViewHolderClass

      @Override
        protected void onBindViewHolder(@NonNull MyviewHolder holder, int position, @NonNull DataClass model) {
            holder.name.setText(String.valueOf(model.getName()));
            holder.Nickname.setText(model.getNickname());
            Log.d(TAG, "onBindViewHolder: Now Bind method executing");
           holder.v.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   Intent i = new Intent(v.getContext(),SecondActivity.class);
                   i.putExtra("Users",getRef(position).getKey());
                   mContext.startActivity(i);
    
               }
           });
        }

In MainActivity:

      mAdapter = new FirebaseAdapter(options,MainActivity.this);

In SecondActivity
  

      public class SecondActivity extends AppCompatActivity {
            DatabaseReference ref;
         TextView gname,gnickname;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_second);
                gname = (TextView)findViewById(R.id.gettingname);
                gnickname =(TextView)findViewById(R.id.gettingnickname);
        
                ref = FirebaseDatabase.getInstance().getReference().child("Users");
        
                String Users = getIntent().getStringExtra("Users");
        
               ref.child(Users).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        if(snapshot.exists()){
                            String name = Objects.requireNonNull(snapshot.child("Name").getValue()).toString();
                            String nick = Objects.requireNonNull(snapshot.child("Nick").getValue()).toString();
        
                            gname.setText(name);
                            gnickname.setText(nick);
                        }
                    }
        
                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {
        
                    }
                });
      
    
Error:
  Process: com.example.firebasesearchrec, PID: 20933
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
        at com.example.firebasesearchrec.SecondActivity$1.onDataChange(SecondActivity.java:34)
        at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
  

…………………..Спасибо…………………………………………………………………………………………………………………………………………

Ответ №1:

Прежде всего, получите контекст активности

 Context mContext;
    
Get context from constructor 
  
 public FirbaseAdapter(FirebaseRecyclerOptions<DataClass> options, Context context) {
    super(options);
    this.mContext = context;

}
  

Наконец

         Intent i = new Intent(view.getContext(), SecondActivity.class);
        i.putExtra("Users",getRef(position).getKey());
        mContext.startActivity(i);
  

или, если вам нужно быстрое и простое решение, попробуйте это

         Intent i = new Intent(view.getContext(), SecondActivity.class);
        i.putExtra("Users",getRef(position).getKey());
        view.getContext().startActivity(i);

    
  

Комментарии:

1. Теперь его сбой, но раньше вы задавали другой вопрос

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

3. Да, теперь я перехожу к другому действию, но теперь у меня есть ошибки в другом действии

Ответ №2:

для вашего третьего метода используйте этот.

 v.getContext().startActivity(i);
  

Комментарии:

1. public void onClick(View v) { Намерение i = новое намерение (v.getContext(),SecondActivity.class ); i.putExtra(«Пользователи»,GetRef(позиция).getKey()); v.getContext().startActivity(i);

2. это правильный вариант? выше я внес некоторые изменения

3. В конструкторе я использовал (v.getcontext,SecondActivity.class ) и в последней строке я использовал то, что вы сказали

4. новый вид. OnClickListener() этот код не становится темнее, это какая-то проблема? или я могу оставить это?

5. пожалуйста, отредактируйте свой пост и добавьте туда код. а также напишите проблему