onCreate
메서드에이 코드가 포함 된 활동 내에서 Caldroid를 삽입했습니다. 당신이 발견으로Caldroid가 새로 고침되지 않습니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
app_font = Typeface.createFromAsset(getAssets(), "custom_font.ttf");
dbHelper = new DatabaseHelper(this);
caldroidFragment = new CaldroidFragment();
if (savedInstanceState != null) {
caldroidFragment.restoreStatesFromKey(savedInstanceState,
"CALDROID_SAVED_STATE");
} else {
Bundle args = new Bundle();
args.putInt(CaldroidFragment.MONTH, calendar.get(Calendar.MONTH) + 1);
args.putInt(CaldroidFragment.YEAR, calendar.get(Calendar.YEAR));
args.putBoolean(CaldroidFragment.ENABLE_SWIPE, true);
args.putBoolean(CaldroidFragment.SIX_WEEKS_IN_CALENDAR, true);
args.putInt(CaldroidFragment.START_DAY_OF_WEEK, CaldroidFragment.MONDAY);
caldroidFragment.setArguments(args);
}
FragmentTransaction t = getSupportFragmentManager().beginTransaction();
t.replace(R.id.calendar_holder, caldroidFragment, FRAGMENT_TAG);
t.commit();
fragmentMounted = true;
CaldroidListener listener = new CaldroidListener() {
@Override
public void onSelectDate(Date date, View view) {
Intent k = new Intent(MainActivity.this, DateActivity.class);
k.putExtra(TIME, date.getTime());
MainActivity.this.startActivity(k);
}
@Override
public void onChangeMonth(int month, int year) {
if (marker != null) {
marker.stopWorking();
}
marker = new DateMarker(MainActivity.this, month, year);
marker.start();
}
@Override
public void onLongClickDate(Date date, View view) {
// do nothing
}
@Override
public void onCaldroidViewCreated() {
// do nothing
}
};
caldroidFragment.setCaldroidListener(listener);
}
는 Thread
다른 달 때마다 사용자 스위치 수신기 내에서 호출되고있다. 이 스레드는 데이터베이스에 액세스하고 이벤트가있는 날짜를 표시합니다.
참고 :이 코드는 스레드의 run 메소드 내부의 코드 샘플에 불과합니다.
// more code above
if (MainActivity.dbHelper.getNotesOnDate(date).size() == 0) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.caldroidFragment.setBackgroundResourceForDate(R.color.SeaGreen, date);
activity.caldroidFragment.setTextColorForDate(R.color.white, date);
activity.caldroidFragment.refreshView();
}
});
}
//more code under
나는이 모든로드 중에 사용자가 로그인 할 수있는 또 다른 활동을 시작합니다. 문제는 onCreate
방법으로 조각을 홀더보기로 바꾸기 전에 만들어진 표시입니다. 홀더로 교체 한 후 caldroidFragment
을 어떻게 새로 고칠 수 있습니까? refreshView()
은 배치 한 후에 작동하지 않는 것 같습니다.
EDIT : 연구를 수행했으며 Caldroid가 앱 V4 Fragment
을 사용하고 있음을 확인했습니다. 내가 분리하려고하고 그것을 새로 고치려면 효과를 얻기 위해 다시 첨부하지만, 그것을하려고하는 동안에만 NullPointerException
있어요.