2017-04-24 14 views
0

FABonClickListener 안에있는 IntentLoaderManager.LoaderCallbacks<Cursor> 및 그 방법을 구현 한 후에 앱이 다운되지만이 방법을 구현하기 전에 앱이 정상적으로 작동합니다. onCreateLoader, onLoadFinishedonLoaderReset 방법으로 FAB 정지가 작동하지 않는 이유는 무엇입니까?CursorLoader가 인 텐트가 작동을 멈추게합니까?

참고 : 앱의 일부 기능 (예 : 삭제)이 아직 없습니다. 삭제 아직 업데이트 방법을 사용 중입니다.

//The intent in the CatalogActivity "The main activity"  
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent newIntent = new Intent(CatalogActivity.this, EditorActivity.class); 
       startActivity(newIntent); 
      } 



//After implementing these methods the EditorActivity, the FAB in the first activity makes the app crash 
    @Override 
    public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
     String[] projection = { 
       PetEntry._ID, 
       PetEntry.COLUMN_PET_NAME, 
       PetEntry.COLUMN_PET_BREED, 
       PetEntry.COLUMN_PET_GENDER, 
       PetEntry.COLUMN_PET_WEIGHT 
     }; 

     return new CursorLoader(this, mCurrentPetUri, projection, null, null, null); 
    } 

    @Override 
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 

     if (data == null || data.getCount() < 1) { 
      return; 
     } 

     if (data.moveToNext()) { 
      String name = data.getString(data.getColumnIndex(PetEntry.COLUMN_PET_NAME)); 
      mNameEditText.setText(name); 

      String breed = data.getString(data.getColumnIndex(PetEntry.COLUMN_PET_BREED)); 
      mBreedEditText.setText(breed); 

      int weight = data.getInt(data.getColumnIndex(PetEntry.COLUMN_PET_WEIGHT)); 
      mWeightEditText.setText(Integer.toString(weight)); 

      int gender = data.getInt(data.getColumnIndex(PetEntry.COLUMN_PET_GENDER)); 

      if (gender == PetEntry.GENDER_MALE){ 
       mGenderSpinner.setSelection(1); 
      } else if (gender == PetEntry.GENDER_FEMALE) { 
       mGenderSpinner.setSelection(2); 
      } else { 
       mGenderSpinner.setSelection(0); 
      } 

     } 

    } 



    @Override 
    public void onLoaderReset(Loader<Cursor> loader) { 
     mNameEditText.setText(""); 
     mBreedEditText.setText(""); 
     mWeightEditText.setText(""); 
     mGenderSpinner.setSelection(0); 
    } 
+0

하지 마십시오 코드 오프 사이트에 링크 만하면됩니다. 충돌 자체의 스택 추적뿐만 아니라 질문 자체에 [mcve]를 포함시켜야합니다. –

+0

이 질문을 수정합니다. –

답변

0

문제는 URI

//The old code 
Intent intent = getIntent(); 

mCurrentPetUri = intent.getData(); 

     if (mCurrentPetUri == null) { 
      setTitle(getString(R.string.editor_activity_title_new_pet)); 

     } else { 
      setTitle(getString(R.string.editor_activity_title_edit_pet)); 
     } 
getLoaderManager().initLoader(1, null, this); 

널 때 나는 loader를 초기화이었다 그러나 나는 loader에만 URI가 null가 아닌 초기화해야

//The new code 
Intent intent = getIntent(); 

     mCurrentPetUri = intent.getData(); 

     if (mCurrentPetUri == null) { 
      setTitle(getString(R.string.editor_activity_title_new_pet)); 

     } else { 
      setTitle(getString(R.string.editor_activity_title_edit_pet)); 
      getLoaderManager().initLoader(1, null, this); 
     }