2011-04-12 7 views
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 새로 고쳐지지 할 수있는 목록보기의 원인이되는 문제점은 무엇을하고 있는가?

+0

@ahsteele :이 디버깅을 시도 했습니까? 아니면 logcat을 따랐습니까? 가장 가능성있는 이유는 talkMessages = messageStore.getAllMessages(); 어댑터가 설정되지 않게, null를 돌려주는 – Squonk

+0

@MisterSquonk 그게 내가 생각하기 전이며 게시하기 전에 디버거에서 응용 프로그램을 실행했습니다. LogCat을 면밀히 주시하고 문제를 나타내는 내용이 보이지 않습니다. 그러나 나는'messageStore.getAllMessages()'에서 반환 된 메시지가 있음을 알고 있습니다. – ahsteele

+0

@ahsteele : 긴 샷 - 오버 라이딩 된 메소드의 끝에 (예 : onResume()) '수퍼'메소드를 호출하는 경향이 있습니다. 내가 보는 대부분의 코드는 처음에는 (몇 가지 예외를 제외하고) 이러한 경향이 있습니다. roboActivity가 onResume() 메서드에서 무언가를 수행하여 부정적인 영향을 미칠 수 있습니까? 내가 말했듯이, 그것은 거의 보이지 않으며 그것은 단지 장거리입니다. – Squonk

답변

5

setContentView(R.layout.main);을 onCreate() 메소드로 옮길 수 있습니다.

항상 onResume()으로 설정하면 문제가 발생할 수 있습니다.

관련 문제