Intent
onClickListener
内的FAB
会在实施LoaderManager.LoaderCallbacks<Cursor>
及其方法后导致应用崩溃,但在实施这些方法之前,该应用工作正常。
为什么onCreateLoader
,onLoadFinished
和onLoaderReset
方法会使FAB
停止工作?
注意:并非该应用程序的所有功能目前都在工作,即:删除 我还在研究更新方法。
//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 :(得分:0)
问题是我在loader
为空
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
只有URI
不为空
//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);
}