【问题标题】:Firebase real time database (not uploading)Firebase 实时数据库(不上传)
【发布时间】:2020-11-22 20:28:59
【问题描述】:

我在尝试上传到 firebase 时遇到问题,我已经实例化了每个变量,所以我认为这不是问题我收到错误 java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.在空对象引用上可编辑 android.widget.EditText.getText()' 正好在这一行 String milkQuantity = milkq.getText().toString();它位于:

    private void createPopupDialog(){
    dialogBuilder = new AlertDialog.Builder(this);
    View view = getLayoutInflater().inflate(R.layout.popup2, null);

    dialogBuilder.setView(view);
    dialogBuilder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

            //start posting
            String milkQuantity = milkq.getText().toString();
            String note = noteText.getText().toString();

            if(!milkQuantity.equals("") && !noteText.equals("")){
                BlogCalendar detailsInfo = new BlogCalendar(milkQuantity, note);
                m 

DatabaseReference.child("MmilkDetails").child(userId).setValue(detailsInfo); }其他{

            }


        }
    });

在我的 .xml 文件中,编辑文本是:

            <EditText
            android:id="@+id/milkQuantity"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/title"
            android:layout_alignParentStart="true"
            android:layout_alignParentEnd="true"
            android:layout_marginStart="25dp"
            android:layout_marginEnd="25dp"
            android:hint="@string/milkQty"
            android:textColorHint="#5E5E5E" />

        <EditText
            android:id="@+id/noteText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/milkQuantity"
            android:layout_alignParentStart="true"
            android:layout_alignParentEnd="true"
            android:layout_marginStart="25dp"
            android:layout_marginEnd="25dp"
            android:hint="@string/notes_hint"
            android:paddingTop="20dp"
            android:textColorHint="#5E5E5E" />

如果您想知道变量是否已实例化

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



    mAuth = FirebaseAuth.getInstance();
    mUser = mAuth.getCurrentUser();
    mDatabase = FirebaseDatabase.getInstance();
    mDatabaseReference = 
    FirebaseDatabase.getInstance().getReference().child("MmilkDetails");
    userId = mUser.getUid();



    blogCalendarList = new ArrayList<>();

    recyclerView2 = (RecyclerView) findViewById(R.id.recyclerViewCalendarActivity);
    recyclerView2.setHasFixedSize(true);
    recyclerView2.setLayoutManager(new LinearLayoutManager(this));
    mDatabaseReference.keepSynced(true);

    milkq =  findViewById(R.id.milkQuantity);
    noteText =  findViewById(R.id.noteText);

【问题讨论】:

  • milkq 在您尝试使用它时为空。
  • 包含 milkQuantity 和 noteText 的 xml 文件的名称是什么?,它只是说 .xml。
  • @HaroldSer 文件名为 popup.xml
  • @JoséAndrésMolinaGarcia 我已经详细回答了为什么,异常的原因。

标签: java android firebase firebase-realtime-database


【解决方案1】:

您收到 NullPointerException 的原因是因为 milkQuantity 是在 popup.xml 中定义的,并且您正在从 R.layout.activity_calendar_ 执行 findViewById (在 onCreate() 方法中)

milkq =  findViewById(R.id.milkQuantity);//this will assign null to milkq, hence the 
                                         //nullpointer exception later.

您要么需要在 R.layout.activity_calendar_ 中有 milkQuantity,要么在 onCreate() 方法中执行以下代码:

setContentView(R.layout.popup.xml); //instead of setContentView(R.layout.activity_calendar_);

编码愉快!

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2020-07-05
    • 2021-07-01
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多