簡體   English   中英

ListView項中ContextMenu的標題

[英]Title of ContextMenu from ListView item

我正在嘗試從ListView中的所選項目設置ContextMenu的標題。 但是,每次我在模擬器上運行它時,它都會崩潰,並且我必須強制關閉它。 DDMS顯示引發了未捕獲的java.lang.NullPointerException。 我的DbTest.java類可能有問題嗎? 我已經在DbTest.java類中定義了所有數據庫操作。

注意:此行可能會引發異常:-

Cursor mCursor = (Cursor) getListAdapter().getItem(info.position);

請查看我的代碼並指出錯誤。

package com.tintin.prototype_2;

import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;

public class Contact_LA extends ListActivity {

DbTest db;
SimpleCursorAdapter dataAdapter;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.check);
    db = new DbTest(this);
    displayList();
}

public void onResume(){
    Cursor newCursor = db.getallContacts();
    dataAdapter.changeCursor(newCursor);
    super.onResume();
}

public void displayList(){
    Cursor cursor = db.getallContacts();
    String columns[] = new String[] {db.Name, db.Number};
    int to[] = new int[] {R.id.textView1, R.id.textView2};
    dataAdapter = new SimpleCursorAdapter(this, R.layout.check_layout, cursor, columns, to, 0);
    //ListView lv = (ListView) findViewById(R.id.list);
    ListView lv = getListView();
    lv.setAdapter(dataAdapter);
    registerForContextMenu(lv);

    Button b = (Button) findViewById(R.id.AddContact);

    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            startActivity(new Intent(Contact_LA.this, Contact_Add.class));
        }
    });
    db.close();
}

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
    super.onCreateContextMenu(menu, v, menuInfo);
    AdapterView.AdapterContextMenuInfo info;
    try{
        info = (AdapterView.AdapterContextMenuInfo) menuInfo;
    }catch(ClassCastException e){
        Log.v("BAD", "Bad Info");
        return;
    }
    Cursor mCursor = (Cursor) getListAdapter().getItem(info.position);
    if(mCursor == null)return;
    menu.setHeaderTitle(mCursor.getString(mCursor.getColumnIndex("Name")));
    menu.add(0, v.getId(), 0, "Delete");
}
}

嘗試這個

try{
        info = menuInfo.getMenuInfo();;
} catch(ClassCastException e){
        Log.v("BAD", "Bad Info");
        return;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM