1

ファイルにコピーして貼り付けた後、目覚まし時計のソースコードを作成しようとしています。コンパイル中にエラーが発生し、mContextを解決できません。このコードへのリンクは次のとおりです。http://www.netmite.com/android/mydroid/2.0/packages/apps/AlarmClock/src/com/android/alarmclock/DigitalClock.java

そして、以下のmContextを使用するコードの一部をコピーして貼り付けました

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();
}

private void setDateFormat() {      

    mFormat = Alarms.get24HourMode(mContext) ? Alarms.M24 : M12;
    mAmPm.setShowAmPm(mFormat == M12);
}

このコンパイルエラーを解決するために、このステートメントをコードに追加しました

Context mContext;

ただし、コンパイルエラーは解決されますが、エミュレータで起動すると、アプリケーションは例外をスローし、起動せずに終了します。

誰かが私が代わりに書いたこの文脈のものまたはワットシャッドの使い方を教えてもらえますか?

4

4 に答える 4

2

mContextの代わりにgetApplicationContext()を使用します。

于 2012-04-12T06:32:53.050 に答える
2

mContext の代わりに、getContext() メソッドを使用してコンテキストを取得します。そこにあるサンプルコードでは、おそらくこの部分が抜けています。

于 2012-04-12T06:23:55.743 に答える
1

ここであなたはあなたの活動の文脈を追加する必要があります私のコードを試してください

mFormat = Alarms.get24HourMode(this) ? Alarms.M24 : M12;
        mAmPm.setShowAmPm(mFormat == M12)

;

より多くのコードが必要

しかし、私の提案は、このビューでコンテキストを取得する場所、またはアクティビティでmContext変数を初期化する場所です。これで機能します。

于 2012-04-12T06:29:47.097 に答える