2012-04-19 2 views
0

사용자가 버튼을 클릭 할 때 따옴표를 새로 고치는 활동을 만들었습니다. 동일한 활동 내에서 사용자가 견적을 원할 경우 클릭 할 수있는 확인란이 있습니다.활동을 다시로드하지 않으면 확인란 새로 고침이 작동하지 않습니다. - Android

모든 것이 완벽하게 작동합니다. 사용자가 따옴표를 클릭하면 해당 확인란을 선택합니다. 이는 사용자가 활동을 떠나서 나중 단계에서 돌아올 때에 만 발생합니다.

그러나 사용자가 활동 내에서 계속해서 견적으로 돌아 오면 사용자 기본 설정 대신 이전 상태가 표시됩니다.

값이 1이면 확인란이 선택되고 확인란이 선택되어 있지 않으면 확인란이 선택되어 있어야합니다.)

Button nextGenerateButton = (Button) findViewById(R.id.btn_next_quotes); 
nextGenerateButton.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     String nextQuote = myDbHelper.getnextQuote(); 
     setQuoteDisplay(nextQuote); 
     btn_favorite.setChecked(myDbHelper.getFavouriteCheckBoxValue()); 

    } 
}); 

버튼은 다음 인용과 getFavouriteCheckBoxValue를 (검색 좋아하는 여부를 확인 :

사용자가 다음 버튼을 클릭

는, 다음과 같은 코드가 실행 :

코드는 다음과 같습니다 열이 데이터베이스에 표시되고 확인란의 값을 설정하는 false가 true를 반환합니다. 사용자가 견적을 좋아하는 경우

public boolean getFavouriteCheckBoxValue() 
    { 
     int laballedFavourite = cursor.getInt(0); 

     if(laballedFavourite == 0) 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 

이 코드는 좋아하는 열이 하나 수정 될 테이블을 업데이트하는 addFavourite()를 실행합니다. 내가 인용 활동을 재개 내가 때 현재 인용 활동에 살 때

btn_favorite.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     // TODO Auto-generated method stub    
     if(isChecked == true) 
     { 
      myDbHelper.addFavourite(); 
     } 

     if(isChecked == false) 
     { 
      myDbHelper.removeFavourite(); 
     } 
    } 
}); 


public void addFavourite() 
{ 
    ContentValues vals = new ContentValues(); 
    vals.put("favouriteQuote", 1); 
    db.update(TABLE_NAME, vals, "columnId = " + cursor.getInt(1), null); 
} 

는 다시 이것은 단지 완벽하게 작동합니다.

희망적입니다.

도움을 주시면 감사하겠습니다.

답변

0

커서를 새로 고침하면 문제가 해결되었습니다.

0

db가 변경되었지만 UI에서는 변경이 이루어지지 않았기 때문에 변경 사항을 확인하려면 확인란을 새로 고침해야합니다. db를 관찰하고 수정 후 확인란을 새로 고쳐야합니다.

+0

btn_favorite.setChecked (myDbHelper.getFavouriteCheckBoxValue()); 다음 및 뒤로 버튼에서 실행되지만 활동이 새로 고쳐질 때만 확인란이 새로 고쳐지지 않습니다. – user983965

+1

그 때문에 db에 값을 가져 오기 전에 커서를 다시 작성해야합니다. – FUBUs

관련 문제