Android 通过Intent传递数据时发生NullPointerException
我想将listview中选定的菜单名传递给另一个intent类,以便其父菜单可以识别新的子菜单。因此,我使用getExtras在katago.java中获取菜单名,如下所示Android 通过Intent传递数据时发生NullPointerException,android,Android,我想将listview中选定的菜单名传递给另一个intent类,以便其父菜单可以识别新的子菜单。因此,我使用getExtras在katago.java中获取菜单名,如下所示 public void displayListView() { listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> listVi
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的方法。使用调试器并使用断点检查该变量的值。日志用于记录信息,而不是调试。