2014-10-08 7 views
0

У меня обычно нет проблем с деталями, но на этот раз я получил NPE ... и я не могу его исправить. Пожалуйста, любезно помогите мне.Прохождение классного фрагмента от фрагмента к другому действию

NPE произошел только, когда я пытаюсь передать приемлемый класс из фрагмента в другое действие. Вещи, работающие нормально, если я передаю посыльный класс из активности в другую деятельность или от активности до фрагмента.

Это мой код фрагмента, child (parcelable класс) не равно нулю, когда я отлажена его:

if(v == imgChild) 
{ 
    Intent i = new Intent(getActivity(), DetailChildActivity.class); 
    i.putExtra("child", child); 
    startActivity(i); 
    Log.d("menu", "children"); 
} 

Вот в моей целевой onCreate деятельности:

Bundle data = getIntent().getExtras(); 
if(data != null) 
{ 
    child = data.getParcelable("child"); //NPE here 

    txtName.setText(child.getName()); 
} 

Это странно. Данные НЕ равны нулю, но аргумент всегда равен нулю.

Это мой parcelable (Child) Класс:

public final Parcelable.Creator<Child> CREATOR = new Parcelable.Creator<Child>() { 
    public Child createFromParcel(Parcel in) { 
     return new Child(in); 
    } 

    public Child[] newArray(int size) { 
     return new Child[size]; 
    } 
}; 

private Child(Parcel in) { 
    id = in.readInt(); 
    user_id = in.readInt(); 
    name = in.readString(); 
    gender = in.readString(); 
    born_date = in.readString(); 
    born_hour = in.readString(); 
    hospital = in.readString(); 
    result = in.readString(); 
} 

@Override 
public int describeContents() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    // TODO Auto-generated method stub 
    dest.writeInt(id); 
    dest.writeInt(user_id); 
    dest.writeString(name); 
    dest.writeString(gender); 
    dest.writeString(born_date); 
    dest.writeString(born_hour); 
    dest.writeString(hospital); 
    dest.writeString(result); 
} 

Это то, что log cat сказал:

ожидается приемник типа com.blabla.child, но получил нулевой

Спасибо за ваше время.

+0

Можете ли вы опубликовать полный след назад, а также код, который читает и записывает объект в посылку? спасибо – Fred

+0

@Fred извините, что вы подразумеваете под «полным следом»? Я напишу свой код для чтения и записи, спасибо –

+0

@Fred done ..... –

ответ

1

Странно. Я знаю ответ, , но я не понимаю, почему. Его от FragmentActivity NullPointer in onCreate savedInstanceState Bundle:

public static final Parcelable.Creator 

Создатель должен быть статичным и окончательным, а не только окончательным. Это оно.

Возможно, вы можете объяснить мне, как эта работа, это ответ на данный момент.

Смежные вопросы