I tried to read data from firebase db and return values to another method.To do that I added interface and use it as a callback function and tried to wait until data filled. But it still give the null pointer exception.
private interface FirebaseCallback {
    void onCallBack(Card card);
}
// method to read travel Cards
public void readCard(final FirebaseCallback fb) {
    cardNo = (EditText)findViewById(R.id.editTextCardNo);
    ValueEventListener cardListner = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()) {
                travelCard = dataSnapshot.getValue(Card.class);
                fb.onCallBack(travelCard);
            }
            else displayMessage(inValidTravelCard);
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.d("ERROR : ", databaseError.getMessage());
        }
    };
    String cn = cardNo.getText().toString();
    Query q = FirebaseDatabase.getInstance().getReference("Card").orderByChild("cardNumber").equalTo(cn).limitToFirst(1);
    q.addListenerForSingleValueEvent(cardListner);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_card_reader);
                  System.out.println("fffffffffffffffffffffffffffffff    " +  " BEFORE>..........................");
            readCard(new FirebaseCallback() {
                @Override
                public void onCallBack(Card card) {
                    Log.d("card = ",card.getAccountId());
                }
            });
            System.out.println("fffffffffffffffffffffffffffffff    " +  " After>..........................");
        }
    });
}
Here's the ERROR :

Here's the database

 
    