意图错误 android 有人尝试解决此错误并帮助我,检查 SS,我尝试了三种方法来解决但没有用
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
在 FirebaseAdapter 中,我在 ViewHolderClass 中创建了 intent 视图
@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.onDataChange(SecondActivity.java:34)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
....................... 谢谢....................... ..................................................... ..................................................... ...................................
第三种方法使用这个。
v.getContext().startActivity(i);
首先,获取Activity上下文
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);
@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.onDataChange(SecondActivity.java:34)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
....................... 谢谢....................... ..................................................... ..................................................... ...................................
第三种方法使用这个。
v.getContext().startActivity(i);
首先,获取Activity上下文
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);