2015-06-13 2 views
0

Так что я более чем на полпути через эту книгу, Android программирования: Ranch Guide Big Nerd, и я почти закончил с CriminalIntent приложением, когда я должен был изменить с рабочего стола на ноутбук. Я просто скопировал рабочую область и установил eclipse и SDK. Теперь LogCat дает мне это при попытке добавить новое преступление:Android проекта: ошибки после смены машины

06-13 09:10:47.720: E/AndroidRuntime(535): java.lang.NullPointerException 
06-13 09:10:47.720: E/AndroidRuntime(535): at com.bignerdranch.android.criminalintent.CrimeFragment.onCreateView(CrimeFragment.java:102) 
06-13 09:10:47.720: E/AndroidRuntime(535): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789) 
06-13 09:10:47.720: E/AndroidRuntime(535): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955) 
06-13 09:10:47.720: E/AndroidRuntime(535): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138) 
06-13 09:10:47.720: E/AndroidRuntime(535): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740) 
06-13 09:10:47.720: E/AndroidRuntime(535): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501) 
06-13 09:10:47.720: E/AndroidRuntime(535): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:490) 
06-13 09:10:47.720: E/AndroidRuntime(535): at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163) 
06-13 09:10:47.720: E/AndroidRuntime(535): at android.support.v4.view.ViewPager.populate(ViewPager.java:1072) 
06-13 09:10:47.720: E/AndroidRuntime(535): at android.support.v4.view.ViewPager.populate(ViewPager.java:918) 
06-13 09:10:47.720: E/AndroidRuntime(535): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1440) 

Линия 102 на CrimeFragment является:

getActivity().getActionBar().setDisplayHomeAsUpEnabled(true); 

Может быть, есть какая-то разница в новой библиотеке поддержки? Было бы странно, я сделал свою предыдущую настройку, как месяц назад.

Другое дело, что я впервые установил Android Studio и SDK, а затем просто затмил Eclipse на этот SDK, может быть, это проблема? Код работал отлично на старой машине, поэтому я не размещаю его здесь, но если вам это нужно, я могу.

редактировать:

@TargetApi(11) 
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { 
    /* int resource, ViewGroup root, boolean attachToRoot */ 
    View v = inflater.inflate(R.layout.fragment_crime, parent, false); 
    // enabling back button on menu bar to be shown 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     /* 
     * this action bar (guess back button in particular) is only compatible with holo.light 
     * theme, maybe some others idk. There is a way around it but it is complicated, need to 
     * use supportActionBar 
     */ 
     if (NavUtils.getParentActivityName(getActivity()) != null) { 
      getActivity().getActionBar().setDisplayHomeAsUpEnabled(true); 
     } 
    } 

    mTitleField = (EditText) v.findViewById(R.id.crime_title); 
    mTitleField.setText(mCrime.getTitle()); 
    mTitleField.addTextChangedListener(new TextWatcher() { 
     public void onTextChanged(CharSequence c, int start, int before, int count) { 
      mCrime.setTitle(c.toString()); 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 

    mDateButton = (Button) v.findViewById(R.id.crime_date); 
    mDateButton.setOnClickListener(new View.OnClickListener() { 
     /* 
     * standard procedure of sending info between fragments of same activity - use 
     * NewInstance 
     */ 
     @Override 
     public void onClick(View v) { 
      FragmentManager fm = getActivity().getSupportFragmentManager(); 
      DatePickerFragment dialog = DatePickerFragment.newInstance(mCrime.getDate()); 
      /* 
      * setting itself as a target to receive REQUEST_DATE after child is dead; first set 
      * up REQUEST_DATE string; used together with private void sendResult(int 
      * resultCode) and DialogInterface.onClickListener in positive button in 
      * datePickerFragment, overriding onActivityResult is necessary in here 
      */ 
      dialog.setTargetFragment(CrimeFragment.this, REQUEST_DATE); 
      dialog.show(fm, DIALOG_DATE); 
     } 
    }); 

    mTimeButton = (Button) v.findViewById(R.id.crime_time); 
    mTimeButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      FragmentManager fm = getActivity().getSupportFragmentManager(); 
      TimePickerFragment dialog = TimePickerFragment.newInstance(mCrime.getDate()); 
      dialog.setTargetFragment(CrimeFragment.this, REQUEST_TIME); 
      dialog.show(fm, DIALOG_TIME); 
     } 
    }); 
    mDeleteButton = (Button) v.findViewById(R.id.crime_delete); 
    mDeleteButton.setText(R.string.delete_crime); 
    mDeleteButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      UUID crimeId = (UUID) getArguments().getSerializable(EXTRA_CRIME_ID); 
      CrimeLab crimeLab = CrimeLab.get(getActivity()); 
      Crime crime = CrimeLab.get(getActivity()).getCrime(crimeId); 
      crimeLab.deleteCrime(crime); 
      crimeLab.saveCrimes(); 
      getActivity().finish(); 
     } 
    }); 
    mPhotoButton = (ImageButton) v.findViewById(R.id.crime_imageButton); 
    mPhotoButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(getActivity(), CrimeCameraActivity.class); 
      startActivity(i); 
     } 
    }); 
    // disabling camera button for devices without camera 
    PackageManager pm = getActivity().getPackageManager(); 
    if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA) 
        && !pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)) { 
     mPhotoButton.setEnabled(false); 
    } 

    mSolvedCheckBox = (CheckBox) v.findViewById(R.id.crime_solved); 
    mSolvedCheckBox.setChecked(mCrime.isSolved()); 
    mSolvedCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
     public void onCheckedChanged(
         /* checkButton needs compoundButton */CompoundButton buttonView, 
         boolean isChecked) { 
      mCrime.setSolved(isChecked); 
     } 
    }); 
    updateDate(); 
    updateTime(); 
    return v; 
} 

ответ

0

Он утверждает, что ваш ActionBar является null. Если вы используете библиотеку поддержки попробовать

getActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

вместо

getActivity().getActionBar().setDisplayHomeAsUpEnabled(true); 
+0

Нет, в этом случае я использую стандартный ActionBar – Gregory

+0

если (Build.VERSION.SDK_INT> = Build.VERSION_CODES.HONEYCOMB) { \t \t \t \t \t \t если (NavUtils.getParentActivityName (getActivity())! = NULL) { \t \t \t \t getActivity(). GetActionBar(). SetDisplayHomeAsUpEnabled (true); \t \t \t} \t \t} – Gregory

+0

Это все привыкли работать нормально – Gregory

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