在这种情况下如何删除 NullpointerException?

我正在使用 firebase 数据库,想要在列表视图中显示数据。当我调用 firebase 数据库的 onDataChange() 时,它显示空指针异常。我在谷歌和许多其他网站上找到了最好的方法,但没有任何东西可以帮助我摆脱这个错误,所以请帮助我,我在过去三个小时内陷入了这个错误......


这是名为 Articles_from_firebase.java 的 Mainactiviy:


public class Articles_from_fireabse extends AppCompatActivity {

EditText editTextName;

Spinner spinnerGenre;

Button buttonAddArtist;

ListView listViewArtists;


DatabaseReference databaseArtists;

//a list to store all the artist from firebase database

List<Artist> artists;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_articles_from_fireabse);


    databaseArtists = FirebaseDatabase.getInstance().getReference("artists");


    editTextName = (EditText) findViewById(R.id.editTextName);

    spinnerGenre = (Spinner) findViewById(R.id.spinnerGenres);

    listViewArtists = (ListView) findViewById(R.id.listViewArtists);

    buttonAddArtist = (Button) findViewById(R.id.buttonAddArtist);


    buttonAddArtist.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View view) {

            //calling the method addArtist()

            //the method is defined below

            //this method is actually performing the write operation

            addArtist();

        }

    });

}


private void addArtist() {

    //getting the values to save

    String name = editTextName.getText().toString().trim();

    String genre = spinnerGenre.getSelectedItem().toString();


    //checking if the value is provided

    if (!TextUtils.isEmpty(name)) {


        //getting a unique id using push().getKey() method

        //it will create a unique id and we will use it as the Primary Key for our Artist

        String id = databaseArtists.push().getKey();


        //creating an Artist Object

       Artist artist = new Artist(id, name, genre);


    }

}


富国沪深
浏览 95回答 2
2回答

蝴蝶刀刀

简单的解决方案每当您调用artists.clear();检查以确保它不为空时。if(artists&nbsp;!=&nbsp;null)&nbsp; &nbsp;&nbsp;artists.clear(); &nbsp;&nbsp;else &nbsp;&nbsp;artists&nbsp;=&nbsp;new&nbsp;ArrayList<>();可持续解决方案你应该考虑对象 arry 的作用artists是什么。在本例中,您有一个数据库和一个数组,它们都存储有关艺术家的信息。数据库应该存储持久数据,即程序执行后仍存在的数据。然而,您的artists对象在运行时就存在。因此,您应该在程序开始处编写代码,将数据从数据库加载到对象中artists。在运行时引用/编辑/添加到artist对象。最后,在运行时结束时使用清理代码来更新数据库中的艺术家表。

慕斯709654

yes 初始化列表艺术家;在 onCreate(){} 内部像这样的 Artists = new ArrayList<>();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java