-2

可能重复:
LogCat 条目含义 2

LogCat 说问题出在数组适配器上,它有一个 NullPointerException。我怎么解决这个问题?如果我按下按钮添加,应用程序会崩溃。

package com.example.to_doliste;

import java.util.List;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;

public class MainActivity extends ListActivity {
    private CommentsDataSource datasource;

      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        datasource = new CommentsDataSource(this);
        datasource.open();

        List<Comment> values = datasource.getAllComments();

阵列适配器获取构建

        ArrayAdapter<Comment> adapter = new ArrayAdapter<Comment>(this,
            android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);
      }

它在这里使用

      public void onClick(View view) {
        @SuppressWarnings("unchecked")
        ArrayAdapter<Comment> adapter = (ArrayAdapter<Comment>) getListAdapter();
        Comment comment = null;
        switch (view.getId()) {
        case R.id.add:

          String comments;
            EditText Feld1 = (EditText)findViewById(R.id.editText1);

            if (Feld1.getText().toString().length() == 0)
                    {
                return;
                    }

            comments = (Feld1.getText().toString());

            Feld1.setText(String.valueOf(comments));


          adapter.add(comment);
          break;
        case R.id.delete:
          if (getListAdapter().getCount() > 0) {
            comment = (Comment) getListAdapter().getItem(0);
            datasource.deleteComment(comment);
            adapter.remove(comment);
          }
          break;
        }
        adapter.notifyDataSetChanged();
      }

适配器在这里停止

      @Override
      protected void onResume() {
        datasource.open();
        super.onResume();
      }

      @Override
      protected void onPause() {
        datasource.close();
        super.onPause();
      }

    } 
4

1 回答 1

2

这里

Comment comment = null;

您正在尝试向适配器添加评论,但评论为空。在将注释初始化为 null 后,您不会更新注释中的任何新值,因此请在从适配器中添加或删除之前更新它。

于 2012-12-26T17:59:27.537 回答