나는 목록보기가있는 주 활동이 있습니다. 목록보기 항목은 LoaderManager와 함께로드됩니다.이미 닫힌 개체를 다시 열 수있는 Attemp android.database.sqlite
내가 (수익 키를 사용) 돌아갈 때 내가 목록보기에서 항목을 클릭
은 내가문제가 ("으로 startActivityForResult"로) 자세한 내용 를 보여줍니다 다른 활동을 엽니 다 정보를 주 활동으로 표시하는 활동에서 다시 클릭 한 다음 예외가 발생합니다. 이미 닫힌 개체를 다시 열려고 시도합니다. 내가 그 활동에서 돌아 가면
하지만 주요 활동 (실제로 "마무리()"입니다) 그리고 난 예외를 얻을 다시 cllick 내가이 만든 버튼 (즉, 더 많은 정보를 보여줍니다)
누구는 문제가 무엇인지 압니까?
감사합니다.
private void display_listview()
{
// create an adapter from the SimpleCursorAdapter
dataAdapter = new SimpleCursorAdapter(
this,
R.layout.row_invite_layout,
null,
columns,
to,
0);
// Assign adapter to ListView
listView.setAdapter(dataAdapter);
//Ensures a loader is initialized and active.
getSupportLoaderManager().initLoader(0, null, this);
//add implementation to listview item click
listView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
Cursor cursor = (Cursor) listView.getItemAtPosition(position);
IInvite invite = LoadFromCursor(cursor);
cursor.close();
mUpdateFlag = true;
if(!mTrashFlag) // Trash Can is turned off
{
Intent intent = new Intent(getApplicationContext(), InviteViewActivity.class);
intent.putExtra("invite",(Invite)invite);
startActivityForResult(intent, INVITE_REQUEST_ID);
}
else // Trash Can is turned on
{
getContentResolver().delete(InviteContentProvider.CONTENT_URI, SQLdataHelper.KEY_ROWID+"="+invite.getID(), null);
ExtraDelete(invite);
getSupportLoaderManager().getLoader(0).forceLoad();
}
}
});
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data)
{
// Swap the new cursor in. (The framework will take care of closing the
// old cursor once we return.)
dataAdapter.swapCursor(data);
}
@Override
public void onLoaderReset(Loader<Cursor> loader)
{
dataAdapter.swapCursor(null);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args)
{
String[] projection = {
SQLdataHelper.KEY_ROWID,
SQLdataHelper.INVITE_CLIENT_ID,
SQLdataHelper.INVITE_CREATION_DATE,
SQLdataHelper.INVITE_NAME,
SQLdataHelper.INVITE_NOTE,
SQLdataHelper.INVITE_REQUESTED_DATE,
SQLdataHelper.INVITE_TOTAL_PRICE,
SQLdataHelper.INVITE_STATUS
};
CursorLoader cursorLoader = new CursorLoader(this,
InviteContentProvider.CONTENT_URI, projection, null, null, null);
return cursorLoader;
}
업데이트 : 고정 IT. 내 주요 활동에이 방법을 추가했습니다.
@Override
public void onResume()
{
super.onResume();
getSupportLoaderManager().getLoader(0).forceLoad();
}
왜 커서를 목록보기 항목으로 저장하고 있습니까? 그리고 왜 당신은'onItemClick()'에서 그것들을 닫고 있습니까? – laalto
커서를 저장하지 마십시오. 이것은 목록보기와 함께 로더 관리자가 작동하는 방법입니다. – user3104022