setValue (объект) запускает неожиданное намерение.андроид студия - PullRequest
0 голосов
/ 11 сентября 2018

Пожалуйста, обратите внимание на последнюю строку onClick. После нажатия register_btn новый loanedBook действительно сохраняется в базе данных, но открывается непредвиденное намерение (намерение, которое было создано за 2 намерения до этого). Если я удалю последнюю строку onClick, неожиданное намерение не будет открыто.

Картинка в приведенной ниже ссылке описывает базу данных до нажатия register_btn.
Я попытался изменить путь к базе данных, в которой я сохраняю значение:
database.child("users").child("1").child("loaned books").setValue(loanedBook) и все работало нормально (неожиданное намерение не открылось).
Я попытался изменить getUserId на определенный userId ("kJeV8 ...."), и это не решило проблему. LoanedBook - простой класс, ничего особенного. если хотите, я тоже могу добавить.

Пожалуйста, помогите

база данных перед нажатием кнопки:

image of database before clicking the button

@Override
public void onClick(View view) {
    if (view.getId() == R.id.register_btn) {
        my_database.getBookList().get(itemNum).waiting_list.add(user);
        database.child("books").child("" + book_id).child("waiting list").setValue(my_database.getBookList().
                get(itemNum).waiting_list);
        if (register_waiting_list.getText().equals("Get the book")) { 
            my_database.setOwnerDetails(book_id);
            LoanedBook loanedBook = new LoanedBook(book_id, my_database.getBook_name(book_id),my_database.getAuthor_name(book_id));
            my_database.addLoanedBook(loanedBook);

    }

}

public void addLoanedBook(LoanedBook loanedBook){ //this func is in MyDatabase class
    loanedBook_list.add(loanedBook);
    database.child("users").child(getUserId()).child("loaned books").setValue(loanedBook_list);
}

 public class LoanedBook {

     private int book_id;
     private String name;
     private String author;

     public LoanedBook(int book_id, String name, String author){
         this.book_id = book_id;
         this.name = name;
         this.author = author;
     }

     public int getBookId(){
         return book_id;
     }

     public String getBookName(){
         return name;
     }

     public String getAuthor(){
         return author;
     }

 }

когда пользователь входит (с помощью авторизации в facebook), я создаю нового пользователя и устанавливаю значение (пользователя) в базу данных

public class User {

    private MyDatabase my_database = MyFirebaseDatabase.getInstance();
    private String name;
    private String city;
    private String email;
    private ArrayList<LoanedBook> loanedBooks_list;

    User(){
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        city = null;
        name = user.getDisplayName();
        email = user.getEmail();
        loanedBooks_list = new ArrayList<LoanedBook>();
    }


    public String getName(){
        return name;
    }

    public String getCity(){
        return  city;
    }

    public String getEmail(){
        return email;
    }

    public void setCity(String city){
        this.city = city;
    }

    public ArrayList<LoanedBook> getLoanedBooks_list(){
        return my_database.getLoanedBookList();
    }
}
...