【问题标题】:Getting error in intent android somebody try to solve this error and help me,Check out SS,I tried three methods to solve but no use在意图android中出现错误有人尝试解决这个错误并帮助我,检查SS,我尝试了三种方法来解决但没有用
【发布时间】:2020-11-25 06:00:43
【问题描述】:

在 FirebaseAdapter 中,我在 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)

.......................谢谢............ ..................................................... ..................................................... ....................................

【问题讨论】:

    标签: java android firebase android-intent android-recyclerview


    【解决方案1】:

    首先,获取Activity Context

    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);
    
        
    

    【讨论】:

    • 现在它崩溃了,但早些时候你问的是不同的问题
    • 现在我进入另一个活动,但现在在第二个活动中出现错误,请您检查并告诉我
    • 是的,现在我进入另一个活动,但现在我在另一个活动中遇到错误
    【解决方案2】:

    对于您的第三种方法,请使用此方法。

    v.getContext().startActivity(i);
    

    【讨论】:

    • public void onClick(View v) { Intent i = new Intent(v.getContext(),SecondActivity.class); i.putExtra("用户",getRef(position).getKey()); v.getContext().startActivity(i);
    • 是对的吗?以上我做了一些更改
    • 在构造函数中我使用了 (v.getcontext,SecondActivity.class),在最后一行我使用了你所说的
    • new View.OnClickListener() 这段代码没有变暗,有什么问题吗?或者我可以离开吗?
    • 请编辑您的帖子并在此处添加代码。并写出问题
    猜你喜欢
    • 2021-03-16
    • 2020-09-20
    • 1970-01-01
    • 2022-10-17
    • 2021-04-20
    • 2016-07-09
    • 1970-01-01
    • 2020-02-26
    相关资源
    最近更新 更多