1

SQLite DB に対して検索操作を実行する必要があります。

私のアクティビティにはEditText、キーワードと検索を入力するためのものがありますButton。ユーザーがボタンをクリックすると、EditText テキストが に保存され、DBHelper クラスkeywordのメソッドに送信されます。search(String keyword)

SearchActivityforと に次のコードがonCreate()ありonClick()ます。

//SearchActivity class extends ListActivity and implements OnClickListener 
Button search;
DataBaseHelper myDbHelper;
SimpleCursorAdapter ca;
ListView lv;
EditText txt;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search_layout);

    txt = (EditText) findViewById(R.id.search_term);
    search = (Button) findViewById(R.id.search_button);

    search.setOnClickListener(this);
}

public void onClick(View v) {
    try {
        myDbHelper.openDataBase();
    } catch (SQLException sqle) {}

    try {
    String keyword= txt.getText().toString();
    Cursor cursor = myDbHelper.search(keyword); //A method in my DB
    cursor.moveToFirst();
    String[] columns = {cursor.getColumnName(1)}; 
    int[] columnsLayouts = {R.id.item_title};
    ca = new SimpleCursorAdapter(this.getBaseContext(), R.layout.items_layout, cursor,columns , columnsLayouts);
    lv = getListView();
    lv.setAdapter(ca);

    } catch(Exception e){}
}

しかし、私はNullPointerExceptionLogCatに入りました!! エラーがどこにあるのかわかりませんでした。

誰でも助けることができますか?

4

1 に答える 1

1

NullPointerException の説明は、もう少し有益です。ただし、ここで NullPointerException が発生する可能性が非常に高くなります。

1: Cursor cursor = myDbHelper.search(keyword); //A method in my DB
2: cursor.moveToFirst();
3: String[] columns = {cursor.getColumnName(1)}; 

またはここ:

1: try {
2:    myDbHelper.openDataBase();
3: } catch (SQLException sqle) {}

行 1: または 2: の最初の部分、または行 2 の 2 番目の部分:

データの存在に依存するオブジェクトがnot null. したがって、 であるかどうかを確認する必要cursorがありnullます。もう 1 つのことは、あなたが決して初期化しないということかもしれませんmyDbHelper

于 2011-07-19T06:01:15.120 に答える