2
나는 SQL Lite 데이터베이스의 데이터로 채우려 고하는 onResume ListView를 가지고 있습니다. 다시 시작하는 동안 클릭 수신기를 추가하고 목록보기를 다시 채 웁니다. onResume, populateListView() 및 onPause 메소드는 아래에 있습니다. 전체 source code is available on GitHub.안드로이드 onResume ListView가 비어 난 후
onResume :
@Override
protected void onResume() {
IntentFilter filter = new IntentFilter();
filter.addAction(TalkServerIntent.INTENT_NEW_MESSAGES.toString());
registerReceiver(receiver, filter);
setContentView(R.layout.main);
talkListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parentView, View childView,
int position, long id) {
GeoCamTalkMessage msg = adapter.getTalkMessage(position);
if (msg.hasAudio()) {
try {
UIUtils.playAudio(getApplicationContext(), msg, player,
siteAuth);
} catch (Exception e) {
UIUtils.displayException(getApplicationContext(), e,
"Cannot retrieve audio");
}
}
}
});
populateListView();
super.onResume();
}
populateListView :
private void populateListView() {
try {
talkMessages = messageStore.getAllMessages();
} catch (Exception e) {
Log.i("Talk", "Error:" + e.getMessage());
}
if (talkMessages != null) {
adapter.setTalkMessages(talkMessages);
talkListView.setAdapter(adapter);
}
}
나는 onPause에 특별한 아무것도 아니에요
하지만, 값이 데이터베이스에 저장되기 때문에 내가해야 할 것입니다 생각하지 않았다 .
@Override
protected void onPause() {
unregisterReceiver(receiver);
super.onPause();
}
onPause
나는 그 onResume 새로 고쳐지지 할 수있는 목록보기의 원인이되는 문제점은 무엇을하고 있는가?
@ahsteele :이 디버깅을 시도 했습니까? 아니면 logcat을 따랐습니까? 가장 가능성있는 이유는 talkMessages = messageStore.getAllMessages(); 어댑터가 설정되지 않게, null를 돌려주는 – Squonk
@MisterSquonk 그게 내가 생각하기 전이며 게시하기 전에 디버거에서 응용 프로그램을 실행했습니다. LogCat을 면밀히 주시하고 문제를 나타내는 내용이 보이지 않습니다. 그러나 나는'messageStore.getAllMessages()'에서 반환 된 메시지가 있음을 알고 있습니다. – ahsteele
@ahsteele : 긴 샷 - 오버 라이딩 된 메소드의 끝에 (예 : onResume()) '수퍼'메소드를 호출하는 경향이 있습니다. 내가 보는 대부분의 코드는 처음에는 (몇 가지 예외를 제외하고) 이러한 경향이 있습니다. roboActivity가 onResume() 메서드에서 무언가를 수행하여 부정적인 영향을 미칠 수 있습니까? 내가 말했듯이, 그것은 거의 보이지 않으며 그것은 단지 장거리입니다. – Squonk