2012-04-12 4 views
1

Ich versuche, den Wecker-Quellcode nach dem Kopieren in meine Dateien kopieren Während der Kompilierung bekomme ich den Fehler, mContext kann nicht gelöst werden. Hier ist der Link zu diesem Stück Code: http://www.netmite.com/android/mydroid/2.0/packages/apps/AlarmClock/src/com/android/alarmclock/DigitalClock.javaWecker Code: mContext Variable kann nicht aufgelöst werden

Und ich habe Kopie einen Teil des Codes eingefügt, die mContext unter

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

Um diesen Kompilierungsfehler zu lösen verwendet, habe ich diese Aussage in meinem Code

Context mContext; 

Obwohl die Kompilierungsfehler behoben sind, löst die Anwendung beim Start im Emulator eine Ausnahme aus und wird beendet, ohne gestartet zu werden.

Kann mir jemand bitte sagen, wie man diese Context-Sache benutzt oder wat shud, die ich als Alternative schreibe?

Antwort

2

Anstelle von mContext verwenden Sie die Methode getContext(), um einen Kontext zu erhalten. Der Beispielcode dort hat diesen Teil vielleicht verpasst.

+0

können Sie bitte das Stück Code einfügen geschrieben werden? Ich bin neu bei Android :( –

+0

Schauen Sie sich Heinrisch Antwort. Die zweite. –

+0

vielen Dank. Es funktionierte :) –

3

Sie müssen mContext initiieren. Es gibt verschiedene Möglichkeiten, dies zu tun. In der Aktivität könnten Sie tun:

Context mContext = this; 

oder allgemein:

Context mContext = getContext(); 
+0

Vielen Dank, es funktioniert :) –

+0

Dann bitte außer die Antwort :) – Heinrisch

1

hier Sie Rahmen Ihrer Tätigkeit hinzufügen müssen versuchen, meinen Code

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

; 

brauchen mehr Code

aber mein Vorschlag ist, wo Sie Ihren Kontext in dieser Ansicht oder Aktivität erhalten, initialisieren Sie Ihre mContext-Variable dort und es wird funktionieren

+0

http: // stackoverflow. com/questions/987072/using-application-context-überall – vipin

2

statt mContext Verwendung getApplicationContext() .Hope es wird Works

Verwandte Themen