Это ошибка, я получаю:Попытка вызвать виртуальный метод на нулевой ссылки на объект
03-11 08: 27: 48,513: E/AndroidRuntime (23647): java.lang.RuntimeException: Невозможно start activity ComponentInfo {com.plan.yeahimin/com.plan.yeahimin.PlanDetailsActivity}: java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.io.Serializable android.os.Bundle.getSerializable (java.lang.String) 'по ссылке нулевого объекта
Я понимаю его из-за переменной, имеющей нулевое значение, но я не могу тренироваться, почему. Похоже, что это «EXTRA_NEW_PLAN» в методе getSerializable()
в DetailsFragment
, но кроме этого я не знаю. Я новичок в Android, поэтому простите меня, если это будет очевидно, но любая помощь будет очень признательна.
Вот мой код для ListFragment
;
public class PlanListFragment extends ListFragment {
public final static String TAG = "com.plan.yeahimin.PlanListFragment";
public final static String EXTRA_NEW_PLAN = "com.plan.yeahimin.plan_id";
private Button mAddPlan;
private ArrayList<Plan> mPlansList;
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){
View v = inflater.inflate(R.layout.empty_view_or_list_view, parent, false);
ListView view = (ListView) v.findViewById(android.R.id.list);
view.setEmptyView(v.findViewById(android.R.id.empty));
mAddPlan = (Button) v.findViewById(R.id.add_a_plan);
mAddPlan.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Log.d(TAG, "add plan clicked");
Plan plan = new Plan();
Log.d(TAG, "new plan created");
PlanArrayList.get(getActivity()).addPlans(plan);
Log.d(TAG, "plan added to mPlansList");
Intent i = new Intent(getActivity(), PlanDetailsActivity.class);
i.putExtra(PlanDetailsFragment.EXTRA_NEW_PLAN, plan.getId());
startActivity(i);
return;
}
});
return v;
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
mPlansList = PlanArrayList.get(getActivity()).getPlans();
//ArrayList<Plan> mPlansList = new ArrayList<Plan>();
PlanArrayAdapter paa = new PlanArrayAdapter(mPlansList);
setListAdapter(paa);
}
public class PlanArrayAdapter extends ArrayAdapter<Plan>{
public PlanArrayAdapter(ArrayList<Plan> planList){
super(getActivity(), 0, planList);
}
public View getView(int position, View convertView, ViewGroup parent){
// Get the plan item for this position
Plan plan = getItem(position);
//If layout doesnt exist, inflate one
if(convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(R.layout.plan_list_fragment, parent, false);
}
TextView planTitle = (TextView) convertView.findViewById(R.id.plan_title);
planTitle.setText(plan.getTitle());
TextView planDate = (TextView) convertView.findViewById(R.id.plan_date);
planDate.setText(plan.getDate().toString());
return convertView;
}
}
}
и вот мой код для DetailsFragment, который открывается из кнопки добавления;
Проблема с args.putSerializable (EXTRA_NEW_PLAN, planId); Почему вы используете UUID, также показываете, где вы вызываете newInstance (UUID) – IshRoid
, ваша проблема находится в 'PlanDetailsActivity'. Не могли бы вы разместить его? – Blackbelt