Canvas Zeichenfläche über XML einbinden

K

KenM

Neues Mitglied
0
Hallo, ich bin totaler anfänger in der der programmiersprache und habe leider ein paar probleme.

ich würde gerne über die XML-Datei drawboard, ein canvas über ein view einbinden. Dies funktioniert auch gut so lange sich meine Klasse CanvasView sich ein einer eigenen Java Datei befindet :) jedoch schaffe ich es dann nicht variablen von meiner main Klasse DrawsettingsActivity in die ander Klasse zu übergeben. Daher habe ich CanvasView in DrawsettingsActivity eingebaut.

Jedoch stürzt die Anwendung immer wieder ab. Kann vlt die Zuweisung in der XML falsch sein?

Danke für jede Hilfe schon mal im Vorraus :thumbsup:


XML - Drawboard:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:gravity="bottom"
android:orientation="vertical" >

<com.example.rekursions_project.DrawsettingsActivity.CanvasView
android:id="@+id/view1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" />

<Button
android:id="@+id/backbutton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="10"
android:onClick="ChangeToDrawsettings"
android:text="@string/BackToSettings" />

</LinearLayout>





und der Code - DrawsettingsActivity


package com.example.rekursions_project;

import android.os.Bundle;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.Menu;
import android.view.View;

public class DrawsettingsActivity extends Activity {

//View view = (View) findViewById(R.id.view1);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_drawsettings);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.drawsettings, menu);
return true;
}


public void ChangeToDrawsettings(View arg0){
setContentView(R.layout.activity_drawsettings);
}


public void Button1(View arg0){ setContentView(R.layout.drawboard);}
public void Button2(View arg0){ setContentView(R.layout.drawboard);}
public void Button3(View arg0){ setContentView(R.layout.drawboard);}
public void Button4(View arg0){ setContentView(R.layout.drawboard);}




public class CanvasView extends View{

public Paint myPaint;

public CanvasView(Context context, AttributeSet attrs) {
super(context, attrs);

}

@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
myPaint = new Paint();

myPaint.setColor(Color.GREEN);
myPaint.setStrokeWidth(5);

canvas.drawColor(Color.BLACK);
canvas.drawLine(0, 0, getWidth(), getHeight(), myPaint);
}

}
}

Der ursprüngliche Beitrag von 15:30 Uhr wurde um 15:32 Uhr ergänzt:

die Lücke bei <com.example.rekursions_project.DrawsettingsActivi ty.CanvasView ist ein copierfehler
 
Was sagt denn die LogCat beim Absturz?

ich würde dir auch empfehlen deine View in eine extra Klasse/Datei zu packen und über den Layouter hinzu zu fügen. Kannst sieja eigtl in "Custom Views" finden
 
wenn ich dann wieder CanvasView in eine eigene Datei schreiben würde, wüsstest du dann eine Möglichkeit um um Werte wie int i = 1; in die neue Datei CanvasView zu importieren.
Ich hatte da schon mit SharedPreferences rumgeschpielt, jedoch ging dies nicht weil ja CanvasView von View erbt.

Hier ist auch noch der logCat: () beginnt ab den Zeitpunkt wo ich auf meine Button drück der drawboard aufruft.

02-17 17:16:49.071: D/OpenGLRenderer(13268): Enabling debug mode 0
02-17 17:17:11.761: D/AndroidRuntime(13268): Shutting down VM
02-17 17:17:11.761: W/dalvikvm(13268): threadid=1: thread exiting with uncaught exception (group=0x4133e2a0)
02-17 17:17:11.991: E/AndroidRuntime(13268): FATAL EXCEPTION: main
02-17 17:17:11.991: E/AndroidRuntime(13268): java.lang.IllegalStateException: Could not execute method of the activity
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.view.View$1.onClick(View.java:3602)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.view.View.performClick(View.java:4095)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.view.View$PerformClick.run(View.java:17078)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.os.Handler.handleCallback(Handler.java:615)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.os.Handler.dispatchMessage(Handler.java:92)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.os.Looper.loop(Looper.java:137)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.app.ActivityThread.main(ActivityThread.java:4872)
02-17 17:17:11.991: E/AndroidRuntime(13268): at java.lang.reflect.Method.invokeNative(Native Method)
02-17 17:17:11.991: E/AndroidRuntime(13268): at java.lang.reflect.Method.invoke(Method.java:511)
02-17 17:17:11.991: E/AndroidRuntime(13268): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
02-17 17:17:11.991: E/AndroidRuntime(13268): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
02-17 17:17:11.991: E/AndroidRuntime(13268): at dalvik.system.NativeStart.main(Native Method)
02-17 17:17:11.991: E/AndroidRuntime(13268): Caused by: java.lang.reflect.InvocationTargetException
02-17 17:17:11.991: E/AndroidRuntime(13268): at java.lang.reflect.Method.invokeNative(Native Method)
02-17 17:17:11.991: E/AndroidRuntime(13268): at java.lang.reflect.Method.invoke(Method.java:511)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.view.View$1.onClick(View.java:3597)
02-17 17:17:11.991: E/AndroidRuntime(13268): ... 11 more
02-17 17:17:11.991: E/AndroidRuntime(13268): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.example.rekursions_project.DrawsettingsActivity.CanvasView
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:698)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
02-17 17:17:11.991: E/AndroidRuntime(13268): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:361)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.app.Activity.setContentView(Activity.java:2043)
02-17 17:17:11.991: E/AndroidRuntime(13268): at com.example.rekursions_project.DrawsettingsActivity.Button1(DrawsettingsActivity.java:38)
02-17 17:17:11.991: E/AndroidRuntime(13268): ... 14 more
02-17 17:17:11.991: E/AndroidRuntime(13268): Caused by: java.lang.ClassNotFoundException: com.example.rekursions_project.DrawsettingsActivity.CanvasView
02-17 17:17:11.991: E/AndroidRuntime(13268): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
02-17 17:17:11.991: E/AndroidRuntime(13268): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
02-17 17:17:11.991: E/AndroidRuntime(13268): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.view.LayoutInflater.createView(LayoutInflater.java:552)
02-17 17:17:11.991: E/AndroidRuntime(13268): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
02-17 17:17:11.991: E/AndroidRuntime(13268): ... 21 more
 
Wieso du holst sie dir in deiner MainActivity über CanvasView canvas = (CanvasView)findViewById(R.id.canvas) und dann schreibst du eine public methode in deiner CanvasView in der du deine Werte übergibst.
 
Mir scheint eher die Lücke kein kopierfehler zu sein, die taucht ja auch im LogCat auf!
Caused by: java.lang.ClassNotFoundException: com.example.rekursions_project.DrawsettingsActivit y.CanvasView
 
Erst mal möchte ich mich entschuldigen das meine Antwort so lange gedauert hat.
Ich hab meine Probleme nun gelöst bekommen :D woran es jetzt letztendlich lag kann
ich nicht sagen. Ich hab immer weiter probiert bis es endlich ging :)
 

Ähnliche Themen

S
Antworten
4
Aufrufe
4.561
mblaster4711
mblaster4711
L
Antworten
5
Aufrufe
829
swa00
swa00
A
Antworten
1
Aufrufe
642
swa00
swa00
Zurück
Oben Unten