以下是我在一个活动中的代码,它将我的数据库值保存在textview中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_how_much);
myAuth = FirebaseAuth.getInstance();
myDatabase = FirebaseDatabase.getInstance().getReference();
hay=(TextView)findViewById(R.id.hay);
String user_id = myAuth.getCurrentUser().getUid();
DatabaseReference userid_database = myDatabase.child(user_id);
DatabaseReference book1 = userid_database.child("Books").child("Book 1").child("Page");
book1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String text = dataSnapshot.getValue(String.class);
hay.setText(text);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void transfer(View view){
String value = hay.getText().toString();
Intent intent = new Intent(HowMuch.this, Basit.class);
intent.putExtra("key",value);
startActivity(intent);
}
这是我的其他活动代码:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basit);
textbasit=(TextView)findViewById(R.id.textbasit);
Bundle bundle=getIntent().getExtras();
String value = bundle.getString("key");
textbasit.setText(value);
}
这是我的错误:
在这一行:String value = bundle.getString(" key"); java.lang.NullPointerException:尝试调用虚方法' java.lang.String android.os.Bundle.getString(java.lang.String)'在空对象引用上
在我的第一个活动值中," hay" TextView中。我希望在另一个活动中获得该值,而不使用更多的textview来保持onDataChange方法。
答案 0 :(得分:0)
您需要检查getIntent()。getExtras()以查看它是否返回null 并且也不需要使用捆绑。 例如。
if (getIntent().getStringExtra("key") != null) {
String value = getIntent().getStringExtra("key");
textbasit.setText(value);
}
`
答案 1 :(得分:0)
将此添加到您的其他活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
if(intent.hasExtra("key")){
textbasit.setText(intent.getStringExtra("key"));
}
}