I am a bit stuck here. I think I am missing something obvious but just can't figure out what it is. I have been trying to load the original source code for "Alarm Clock" into Eclipse, but the code shows an error in DigitalClock.java - "mContext cannot be resolved". I have looked in a number of releases, and paste the code in exactly, but always the same error - "mContext cannot be resolved".
I have tried to "fix" the code various ways but to no avail. But then this is the working original source code, so of course should not requiring fixing ..... Any ideas would be appreciated. Thanks, Matt Here is the DigitalClock.java code. =============== /* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.tencentapps.betteralarm; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Resources; import android.database.ContentObserver; import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.Drawable; import android.os.Handler; import android.provider.Settings; import android.text.format.DateFormat; import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import java.util.Calendar; import com.tencentapps.betteralarm.R; import com.tencentapps.betteralarm.R.color; import com.tencentapps.betteralarm.R.drawable; import com.tencentapps.betteralarm.R.id; /** * Displays the time */ public class DigitalClock extends LinearLayout { private final static String M12 = "h:mm"; private Calendar mCalendar; private String mFormat; private TextView mTimeDisplay; private AmPm mAmPm; private boolean mAnimate; private ContentObserver mFormatChangeObserver; private boolean mLive = true; private boolean mAttached; /* called by system on minute ticks */ private final Handler mHandler = new Handler(); private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (mLive && intent.getAction().equals( Intent.ACTION_TIMEZONE_CHANGED)) { mCalendar = Calendar.getInstance(); } updateTime(); } }; static class AmPm { private int mColorOn, mColorOff; private LinearLayout mAmPmLayout; private TextView mAm, mPm; AmPm(View parent) { mAmPmLayout = (LinearLayout) parent.findViewById(R.id.am_pm); mAm = (TextView)mAmPmLayout.findViewById(R.id.am); mPm = (TextView)mAmPmLayout.findViewById(R.id.pm); Resources r = parent.getResources(); mColorOn = r.getColor(R.color.ampm_on); mColorOff = r.getColor(R.color.ampm_off); } void setShowAmPm(boolean show) { mAmPmLayout.setVisibility(show ? View.VISIBLE : View.GONE); } void setIsMorning(boolean isMorning) { mAm.setTextColor(isMorning ? mColorOn : mColorOff); mPm.setTextColor(isMorning ? mColorOff : mColorOn); } } private class FormatChangeObserver extends ContentObserver { public FormatChangeObserver() { super(new Handler()); } @Override public void onChange(boolean selfChange) { setDateFormat(); updateTime(); } } public DigitalClock(Context context) { this(context, null); } public DigitalClock(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onFinishInflate() { super.onFinishInflate(); mTimeDisplay = (TextView) findViewById(R.id.timeDisplay); mAmPm = new AmPm(this); mCalendar = Calendar.getInstance(); setDateFormat(); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); if (Log.LOGV) Log.v("onAttachedToWindow " + this); if (mAttached) return; mAttached = true; if (mAnimate) { setBackgroundResource(R.drawable.animate_circle); /* Start the animation (looped playback by default). */ ((AnimationDrawable) getBackground()).start(); } if (mLive) { /* monitor time ticks, time changed, timezone */ IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_TIME_TICK); filter.addAction(Intent.ACTION_TIME_CHANGED); filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); mContext.registerReceiver(mIntentReceiver, filter, null, mHandler); } /* monitor 12/24-hour display preference */ mFormatChangeObserver = new FormatChangeObserver(); mContext.getContentResolver().registerContentObserver( Settings.System.CONTENT_URI, true, mFormatChangeObserver); updateTime(); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); if (!mAttached) return; mAttached = false; Drawable background = getBackground(); if (background instanceof AnimationDrawable) { ((AnimationDrawable) background).stop(); } if (mLive) { mContext.unregisterReceiver(mIntentReceiver); } mContext.getContentResolver().unregisterContentObserver( mFormatChangeObserver); } void updateTime(Calendar c) { mCalendar = c; updateTime(); } private void updateTime() { if (mLive) { mCalendar.setTimeInMillis(System.currentTimeMillis()); } CharSequence newTime = DateFormat.format(mFormat, mCalendar); mTimeDisplay.setText(newTime); mAmPm.setIsMorning(mCalendar.get(Calendar.AM_PM) == 0); } private void setDateFormat() { mFormat = Alarms.get24HourMode(mContext) ? Alarms.M24 : M12; mAmPm.setShowAmPm(mFormat == M12); } void setAnimate() { mAnimate = true; } void setLive(boolean live) { mLive = live; } } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en