Android 通过Intent传递数据时发生NullPointerException

Android 通过Intent传递数据时发生NullPointerException,android,Android,我想将listview中选定的菜单名传递给另一个intent类,以便其父菜单可以识别新的子菜单。因此,我使用getExtras在katago.java中获取菜单名,如下所示 public void displayListView() { listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> listVi

我想将listview中选定的菜单名传递给另一个intent类,以便其父菜单可以识别新的子菜单。因此,我使用getExtras在katago.java中获取菜单名,如下所示

 public void displayListView() {



listView.setOnItemClickListener(new OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> listView, View view, 
     int position, long id) {

       Cursor cursor = (Cursor) listView.getItemAtPosition(position);

       String countryCode = 
        cursor.getString(cursor.getColumnIndexOrThrow("katagori_label"));   
    Intent ourIntent = new Intent(KatagoriPengeluaran.this, Pengeluaran.class);
        ourIntent.putExtra("cek", countryCode);

       startActivity(ourIntent);
   }
  });
    @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.pengeluaran);

  dbHelper = new Database(this);
  dbHelper.open();

    Bundle extras = this.getIntent().getExtras();
    String sub = extras.getString("cek");

// dbHelper.deleteAllData();
 //dbHelper.insertSomeData();

  //Generate ListView from SQLite Database
  displayListView(sub);

 }


         private void displayListView(final String su) {


  cursor = dbHelper.fetchPengeluaran(su);

  // The desired columns to be bound
  allAdapter = new PengeluaranCursorAdapter(this, cursor);

  ListView listView = (ListView) findViewById(android.R.id.list);
  // Assign adapter to ListView
  listView.setAdapter(allAdapter);
这是我的数据库和fetch函数

    public class Database {
// Katagori Pengeluaran
    public static final String RIK = "_id";
    public static final String RLK = "katagori_label";
    public static final String RJK = "katagori_jumlah";

    //Pengeluaran

    public static final String KEY_RPI = "_id";
     public static final String KEY_RLP = "pengeluaran_label";
     public static final String KEY_RSK = "pengeluaran_sub";
     public static final String KEY_RNP = "nominal";
     public static final String KEY_RTP = "tanggal";



        public Cursor fetchPengeluaran(String su) {

  Cursor mCursor = mDb.query(PENGELUARAN_TABLE, new String[] {KEY_RPI,
    KEY_RLP, KEY_RSK, KEY_RNP, KEY_RTP}, "KEY_RLP like " + su
  ,null, null, null, null);

  if (mCursor != null) {
   mCursor.moveToFirst();
  }
  return mCursor;
 }

但在执行时,它表示为NullPointerException,无法初始化日志cat中的活动组件。请帮忙

使用此方法
getExtra

sub = (String) getIntent().getSerializableExtra("cek");
ourIntent.putString("cek", countryCode);
编辑

只有你
Log.i(“活动”,countryCode)


要使您的
countrycode
不为空

为什么要从listView返回光标?我觉得这不是个好主意。您应该将演示文稿和数据分开

您可以尝试在第一个类中使用以下内容。使用
putString()
而不是
putExtra()

ListView和适配器 除此之外,我找不到任何我愿意做的事情。但是就像我在第一个地方说的,回顾一下在演示文稿中有一个
光标
对象(
列表视图
)。例如,在
ArrayAdapter
中使用String对象,这样您就可以直接获取
String
countryCode

有关ListView的更多信息,请参见此处:

调试
无论如何,我会在调试模式下再次检查从
光标返回的对象是否符合您的预期,最重要的是不是
null

您是否在AndroidManifest中声明了活动?从logcatLog发布堆栈跟踪不是检查项是否为null的方法。使用调试器并使用断点检查该变量的值。日志用于记录信息,而不是调试。