-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 です。コメントをnullに初期化した後、コメントの新しい値を更新していないため、アダプターに追加または削除する前に更新してください。

于 2012-12-26T17:59:27.537 に答える