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;

但是,尽管编译错误已解决,但在模拟器中启动时,应用程序会引发异常并退出而不启动。

有人可以告诉我如何使用这个上下文的东西或我写的 wat shud 作为替代方案吗?

4

4 回答 4

3

您需要启动 mContext。有一些不同的方法可以做到这一点。在活动中,您可以:

Context mContext = this;

或一般来说:

Context mContext = getContext();
于 2012-04-12T06:27:53.963 回答
2

使用 getContext() 方法代替 mContext 来获取上下文。那里的示例代码可能错过了这部分。

于 2012-04-12T06:23:55.743 回答
2

而不是mContext使用getApplicationContext() 。希望它会工作

于 2012-04-12T06:32:53.050 回答
1

在这里你需要添加你的活动的上下文试试我的代码

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

;

需要更多代码

但我的建议是您在此视图或活动中获取上下文的位置在那里初始化您的 mContext 变量,它将起作用

于 2012-04-12T06:29:47.097 回答