数据没有添加到android中的firebase数据库

时间:2017-12-22 20:20:22

标签: android database firebase firebase-realtime-database nullpointerexception

SetupProfile类

public class SetUpProfile extends AppCompatActivity {

private EditText input_name, input_email, input_status, input_quote;
private ListView list_data;
private ProgressBar circular_progress;

private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference mDatabaseReference;

private List<Users> list_users = new ArrayList<Users>();

private Users selectedUser; // hold user when we select item in listview


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.setup_profile);

    //Add toolbar
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setTitle("Profile");
    setSupportActionBar(toolbar);

    //Control
    circular_progress = (ProgressBar) findViewById(R.id.circular_progress);
    input_name = (EditText) findViewById(R.id.name);
    input_email = (EditText) findViewById(R.id.email);
    input_status = (EditText) findViewById(R.id.status);
    input_quote = (EditText) findViewById(R.id.quote);
    Button button = (Button)findViewById(R.id.save);
    list_data = (ListView) findViewById(R.id.list_data);
    list_data.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @SuppressLint("RestrictedApi")
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Users users = (Users) adapterView.getItemAtPosition(i);
            selectedUser = users;
            input_name.setText(users.getName());
            input_email.setText(users.getEmail());
            input_status.setText(users.getStatus());
            input_quote.setText(users.getQuote());
        }
    });


    //Firebase
    initFirebase();
    addEventFirebaseListener();

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(SetUpProfile.this, HomeScreen.class));
            createUser();
        }
    });
}


private void addEventFirebaseListener() {
    //Progressing
    circular_progress.setVisibility(View.VISIBLE);
    list_data.setVisibility(View.INVISIBLE);

    mDatabaseReference.child("users").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (list_users.size() > 0)
                list_users.clear();
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                Users users = postSnapshot.getValue(Users.class);
                list_users.add(users);
            }
            UsersAdapter adapter = new UsersAdapter(SetUpProfile.this, list_users);
            list_data.setAdapter(adapter);

            circular_progress.setVisibility(View.INVISIBLE);
            list_data.setVisibility(View.VISIBLE);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

private void initFirebase() {
    FirebaseApp.initializeApp(this);
    mFirebaseDatabase = FirebaseDatabase.getInstance();
    mDatabaseReference = mFirebaseDatabase.getReference();
}
@SuppressLint("RestrictedApi")
private void createUser() {
    @SuppressLint("RestrictedApi") Users user;
    user = new Users(UUID.randomUUID().toString(),input_name.getText().toString(),input_email.getText().toString(),input_status.getText().toString(),input_quote.getText().toString());
    mDatabaseReference.child("users").child(user.getUid()).setValue(user);
    clearEditText();

}
private void clearEditText() {
    input_name.setText("");
    input_email.setText("");
    input_status.setText("");
    input_quote.setText("");
}
}

用户类

public class Users {
private String uid;
private String phn;
private int img;
private String name;
private String email;
private String status;
private String quote;

public Users(String s, String toString, String string, String s1, String toString1) {
}

public Users(String uid, String phn, int img, String name, String email, String status, String quote) {
    this.uid = uid;// Primary key and key
    this.phn = phn;
    this.img = img;
    this.name = name;
    this.email = email;
    this.status = status;
    this.quote = quote;
}

public String getUid() {
    return uid;
}
public void setUid(String uid) {
    this.uid = uid;
}

public String getPhn() {
    return phn;
}
public void setPhn(String phn) {
    this.phn = phn;
}

public int getImg() {
    return img;
}
public void setImg(int img) {
    this.img = img;
}

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

public String getEmail() { return email; }
public void setEmail(String email) {
    this.email = email;
}

public String getStatus() { return status; }
public void setStatus(String status) {
    this.status = status;
}

public String getQuote() { return quote; }
public void setQuote(String quote) {
    this.quote = quote;
}
}

UsersAdapter类

public class UsersAdapter extends BaseAdapter {

Activity activity;
List<Users> lstUsers;
LayoutInflater inflater;


public UsersAdapter(Activity activity, List<Users> lstUsers) {
    this.activity = activity;
    this.lstUsers = lstUsers;
}

@Override
public int getCount() {
    return lstUsers.size();
}

@Override
public Object getItem(int i) {
    return lstUsers.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

@SuppressLint("RestrictedApi")
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    inflater = (LayoutInflater)activity.getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View itemView = inflater.inflate(R.layout.users_adapter,null);

    TextView txtPhn = (TextView)itemView.findViewById(R.id.list_phn);
    TextView txtName = (TextView)itemView.findViewById(R.id.list_name);
    TextView txtEmail = (TextView)itemView.findViewById(R.id.list_email);
    TextView txtStatus = (TextView)itemView.findViewById(R.id.list_status);
    TextView txtQuote = (TextView)itemView.findViewById(R.id.list_quote);

    txtPhn.setText(lstUsers.get(i).getPhn());
    txtName.setText(lstUsers.get(i).getName());
    txtEmail.setText(lstUsers.get(i).getEmail());
    txtStatus.setText(lstUsers.get(i).getStatus());
    txtQuote.setText(lstUsers.get(i).getQuote());

    return itemView;
}
}

我得到一个Null pointerException

java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
    at com.google.firebase.database.DatabaseReference.child(Unknown Source)
    at com.appmaster.akash.messageplus.SetUpProfile.createUser(SetUpProfile.java:123)
    at com.appmaster.akash.messageplus.SetUpProfile.access$500(SetUpProfile.java:26)
    at com.appmaster.akash.messageplus.SetUpProfile$2.onClick(SetUpProfile.java:80)
    at android.view.View.performClick(View.java:5207)
    at android.view.View$PerformClick.run(View.java:21177)
    at android.os.Handler.handleCallback(Handler.java:742)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:5527)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)

代码好吗?我的意思是如果清除NullPointerException它会工作吗?如果不是建议更改或请链接好。

此外,我希望数据库存储登录时用于进行身份验证的用户的电话号码。登录时没有问题,登录信息存储在firebase身份验证中。如何将电话号码输入数据库?

0 个答案:

没有答案