将存储在firebase中的数据从一个活动传递到另一个活动

时间:2017-01-14 18:22:00

标签: android firebase-realtime-database

以下是我在一个活动中的代码,它将我的数据库值保存在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方法。

2 个答案:

答案 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"));
    }
}