Hinzufügen einer benutzerdefinierten Ansicht als Ansicht von XML-layout

Das Szenario ist das folgende:

Habe ich eine Tätigkeit RunTrainingWorkoutsView mit XML-layout _run_workout.xml_ mit einigen labels, die aktualisiert werden CountDownTimer. Funktioniert einwandfrei...

Nun, abgesehen von den Etiketten, die aktualisiert werden jede sec von onTick() callback-Methode des Countdown-Timers Objekt möchte ich hinzufügen, um eine benutzerdefinierte Oberfläche Blick auf meine _run_workout.xml layout_, dass würde ziehen einige Bögen aktualisiert, die von den gleichen onTick() Methode jede Sekunde...

meine run_workout.xml:

<training.timer.CounterClockView 
    android:id="@+id/counter_clock_surface"
    android:layout_width="300dp" 
    android:layout_height="240dp">
</training.timer.CounterClockView>

Meine benutzerdefinierte Ansicht erweitert surfaceView

public class CounterClockView extends SurfaceView {

Paint paint = new Paint();
Paint paint2 = new Paint();

final RectF rect = new RectF();
final RectF rect2 = new RectF();

int counterArcAngle = 15;
//constructor
public CounterClockView(Context context, AttributeSet attributeSet) {
    super(context);

    //setting some paint properties...

    this.setBackgroundColor(Color.TRANSPARENT);

}

@Override
public void onDraw(Canvas canvas) {

    rect.set(50, 50, 150, 150);
    rect2.set(50, 50, 150, 150);

    this.layout(0, 0, 200, 200);

    canvas.drawArc(rect, -90, 360, false, paint);
    canvas.drawArc(rect2, -90, counterArcAngle, false, paint2);

}

Meine main-Klasse erweitert Aktivität ist immer der Verweis auf eine benutzerdefinierte surfaceView im layout mit dem folgenden code:

//counterClockView  is declared outside of onCreate() as CounterClockView counterClockView;  

//later in onCreate(){....
counterClockView  = (CounterClockView) findViewById(R.id.counter_clock_surface);

Das problem ist, und ändern Sie den Wert der member-Variablen der customView Objekt (counterClockView)

counterClockView.counterArcAngle = 10;

Absturz der app...

Auch von meinem Haupt-Aktivität, die ich nennen möchte invalidate () - Methode zum wiederholen der Oberfläche Ansicht nach ändern der counterArcAngle Wert, aber dieser verursacht die app zum Absturz zu...

Warum nicht erstellen kann counterClockView Objekt und Referenz zu einem xml-layout-element des gleichen Typs und die ändern Ihr Gewand, dass es ungültig ist usw. ?

BEARBEITEN LogCat:

threadid=1: thread exiting with uncaught exception (group=0x40015560)

ERROR/AndroidRuntime(487): FATAL EXCEPTION: main

ERROR/AndroidRuntime(487): java.lang.RuntimeException: Unable to start activity ComponentInfo{training.timer/training.timer.RunTrainingWorkoutsView}: java.lang.NullPointerException

ERROR/AndroidRuntime(487):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
ERROR/AndroidRuntime(487):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
ERROR/AndroidRuntime(487):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
ERROR/AndroidRuntime(487):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
ERROR/AndroidRuntime(487):     at android.os.Handler.dispatchMessage(Handler.java:99)
ERROR/AndroidRuntime(487):     at android.os.Looper.loop(Looper.java:123)

ERROR/AndroidRuntime(487):     at android.app.ActivityThread.main(ActivityThread.java:3683)
ERROR/AndroidRuntime(487):     at java.lang.reflect.Method.invokeNative(Native Method)
ERROR/AndroidRuntime(487):     at java.lang.reflect.Method.invoke(Method.java:507)
ERROR/AndroidRuntime(487):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
ERROR/AndroidRuntime(487):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
ERROR/AndroidRuntime(487):     at dalvik.system.NativeStart.main(Native Method)
ERROR/AndroidRuntime(487): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(487):     at training.timer.RunTrainingWorkoutsView.onCreate(RunTrainingWorkoutsView.java:72)
ERROR/AndroidRuntime(487):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
ERROR/AndroidRuntime(487):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
ERROR/AndroidRuntime(487):     ... 11 more
was ist die error log? Lesen Sie die Ausgabe von LogCat
Ich habe den log. danke...
RunTrainingWorkoutsView.onCreate() bei dieser Methode, Linie 72 in dieser Datei RunTrainingWorkoutsView.java, ein Objekt wird NULL. Check it out!
Gut, das ist die Frage... Wenn ich einen hätte:TextView txt = (TextView) findViewById(...) wäre es nicht NULL, so ist die Frage, warum ist meine benutzerdefinierte Ansicht (surfaceView) NULL???

InformationsquelleAutor luigi7up | 2011-11-02

Schreibe einen Kommentar