Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java onListItemClick使用parcelable的未捕获异常_Java_Android - Fatal编程技术网

Java onListItemClick使用parcelable的未捕获异常

Java onListItemClick使用parcelable的未捕获异常,java,android,Java,Android,我得到了一个意外的异常,onListItemClick使用parcelable,我已经用尽了所有可能的方法来寻找答案。该应用程序是一个观鸟应用程序,它使用一个带有自定义适配器的标准listview,该适配器链接到一个详细活动。鸟类及其详细信息使用SQLite本地存储。非常感谢你的帮助 只是想补充一句。。这是我的第一个应用程序,也是我在这里的第一篇帖子,所以请善待我 以下是我的onListItemClick方法: @Override protected void onListItemClick(L

我得到了一个意外的异常,onListItemClick使用parcelable,我已经用尽了所有可能的方法来寻找答案。该应用程序是一个观鸟应用程序,它使用一个带有自定义适配器的标准listview,该适配器链接到一个详细活动。鸟类及其详细信息使用SQLite本地存储。非常感谢你的帮助

只是想补充一句。。这是我的第一个应用程序,也是我在这里的第一篇帖子,所以请善待我

以下是我的onListItemClick方法:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

    Bird bird = birds.get(position);

    Intent intent = new Intent(this, Profile.class);
    intent.putExtra(".model.Bird", bird);
    startActivity(intent);
}
这是我的个人资料课:

public class Profile extends Activity{

Bird bird;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.profile);

    Bundle b = getIntent().getExtras();
    bird = b.getParcelable(".model.bird");

    refreshDisplay();

}
这是我的模型(没有setter和getter):

编辑2: 我在其中设置的代码
Birds

private List<Bird> birds;

// create reference to database
BirdsDataSource datasource;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.reference_guide);

   // open connection to db
    datasource = new BirdsDataSource(this);
    datasource.open();

    // get list of birds from db 
    List<Bird> birds = datasource.findAll();  
    if(birds.size() == 0) {
        createData();
        birds = datasource.findAll();
    }

    // set view adapter
    ArrayAdapter<Bird> adapter = new CustomBaseAdapter(this, birds);
    setListAdapter(adapter);
}
私人鸟类名录;
//创建对数据库的引用
鸟类数据源;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.参考指南);
//打开到数据库的连接
数据源=新的BirdsDataSource(此);
datasource.open();
//从数据库中获取鸟类列表
List birds=datasource.findAll();
如果(birds.size()==0){
createData();
birds=datasource.findAll();
}
//设置视图适配器
ArrayAdapter adapter=新的CustomBaseAdapter(此选项为birds);
setListAdapter(适配器);
}
列表视图使用替换此行从数据库中填充fine

Bird-Bird=birds.get(位置)


Bird Bird=(Bird)l.getAdapter().getItemAtPosition(位置)

添加完整的日志cat以了解确切的问题。您可以发布日志cat日志吗?onListItemClick的哪一行是第89行?我认为“birds”是空的。第89行是空的!这是在我宣布一个鸟的对象和新的意图之前的一行。谢谢你的回复。Eclipse不允许我这么做。我必须将“l.getListAdapter”更改为“l.getAdapter”,然后添加一个强制转换。测试并得到类似错误(未捕获异常)。再次感谢。。
02-28 15:43:38.048: W/dalvikvm(16350): threadid=1: thread exiting with uncaught exception (group=0x41cfe468)
02-28 15:43:38.058: E/AndroidRuntime(16350): FATAL EXCEPTION: main
02-28 15:43:38.058: E/AndroidRuntime(16350): java.lang.NullPointerException
02-28 15:43:38.058: E/AndroidRuntime(16350):    at com.example.birdnote.ReferenceGuide.onListItemClick(ReferenceGuide.java:89)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at android.widget.AdapterView.performItemClick(AdapterView.java:298)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at android.widget.AbsListView.performItemClick(AbsListView.java:1150)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at android.widget.ListView.performItemClick(ListView.java:4397)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2985)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at android.widget.AbsListView$1.run(AbsListView.java:3671)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at android.os.Handler.handleCallback(Handler.java:615)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at android.os.Handler.dispatchMessage(Handler.java:92)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at android.os.Looper.loop(Looper.java:155)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at android.app.ActivityThread.main(ActivityThread.java:5454)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at java.lang.reflect.Method.invokeNative(Native Method)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at java.lang.reflect.Method.invoke(Method.java:511)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
02-28 15:43:38.058: E/AndroidRuntime(16350):    at dalvik.system.NativeStart.main(Native Method)
private List<Bird> birds;

// create reference to database
BirdsDataSource datasource;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.reference_guide);

   // open connection to db
    datasource = new BirdsDataSource(this);
    datasource.open();

    // get list of birds from db 
    List<Bird> birds = datasource.findAll();  
    if(birds.size() == 0) {
        createData();
        birds = datasource.findAll();
    }

    // set view adapter
    ArrayAdapter<Bird> adapter = new CustomBaseAdapter(this, birds);
    setListAdapter(adapter);
}