P
paxis
Fortgeschrittenes Mitglied
- 0
Hallo Leute,
da ich nun wirklich in die Android Programmierung einsteigen möchte, dachte ich melde mich hier auch mal kostenslos an !
Jetzt habe ich sogar direkt eine Frage bei der ihr mir hoffentlich helfen könnt !
Ich poste erstmal meinen Code:
Um zu erklären, was ich genau machen möchte:
Ich möchte eine Canvas erzeugen auf der ich mithilfe von Buttons z.B: Rechtecke bewegen!
In Der Main Activity wird eigentlich nur ein OnClickListener festgelegt. In der Activity Spielfeld wird erstmal die Canvas mit on Draw erstellt !
Dann eine Testmethode (public void Test) die eigentlich nur die int Variable Test ändern kann !
Dann ist da noch die innere Klasse ThreadAusführung! In der gibt es einen Thread der immer wieder die onDraw Methode ausführen soll!
Wenn ich die App im Emulgator ausführe komme ich bis zur Darstellung der Canvas mit einer Linie und wenn ich auf den Button test Drücke kommt folgendes:
01-28 20:06:56.622: E/AndroidRuntime(265): FATAL EXCEPTION: main
01-28 20:06:56.622: E/AndroidRuntime(265): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.tobi.strategiespiel/de.tobi.strategiespiel.MainActivity}: java.lang.NullPointerException
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.os.Handler.dispatchMessage(Handler.java:99)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.os.Looper.loop(Looper.java:123)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-28 20:06:56.622: E/AndroidRuntime(265): at java.lang.reflect.Method.invokeNative(Native Method)
01-28 20:06:56.622: E/AndroidRuntime(265): at java.lang.reflect.Method.invoke(Method.java:521)
01-28 20:06:56.622: E/AndroidRuntime(265): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-28 20:06:56.622: E/AndroidRuntime(265): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-28 20:06:56.622: E/AndroidRuntime(265): at dalvik.system.NativeStart.main(Native Method)
01-28 20:06:56.622: E/AndroidRuntime(265): Caused by: java.lang.NullPointerException
01-28 20:06:56.622: E/AndroidRuntime(265): at android.view.ViewConfiguration.get(ViewConfiguration.java:211)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.view.View.<init>(View.java:1814)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.view.View.<init>(View.java:1856)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.widget.ImageView.<init>(ImageView.java:112)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.widget.ImageView.<init>(ImageView.java:108)
01-28 20:06:56.622: E/AndroidRuntime(265): at de.tobi.strategiespiel.Spielfeld.<init>(Spielfeld.java:19)
01-28 20:06:56.622: E/AndroidRuntime(265): at de.tobi.strategiespiel.MainActivity.onCreate(MainActivity.java:26)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-28 20:06:56.622: E/AndroidRuntime(265): ... 11 more
Kann mir wer helfen?
Ich glaube das Problem liegt im OnClickEvent, nur was genau??
Danke schonmal
paxis
da ich nun wirklich in die Android Programmierung einsteigen möchte, dachte ich melde mich hier auch mal kostenslos an !
Jetzt habe ich sogar direkt eine Frage bei der ihr mir hoffentlich helfen könnt !
Ich poste erstmal meinen Code:
Code:
package de.tobi.strategiespiel;
import android.R;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.os.Bundle;
import android.util.AttributeSet;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
public class Spielfeld extends ImageView {
private int test;
private Spielfeld test2;
public Spielfeld(Context context, AttributeSet attrs) {
super(context, attrs); }
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 1. Paint-Objekt für Blauton und
// Linienbreite von 5 Pixeln erzeugen
Paint pinsel = new Paint();
pinsel.setColor(Color.rgb(64, 64, 255));
pinsel.setStrokeWidth(5);
// Diagonale durch Leinwand zeichnen
canvas.drawLine(0, 0, getWidth(), getHeight(), pinsel);
if (test==1) {
canvas.drawLine(10, 0, getWidth(), getHeight(), pinsel);
}
}
public void test(int i) {
test=i;
postInvalidate();
// TODO Auto-generated method stub
}
}
class ThreadAusführung extends Thread{
public boolean weiter;
Spielfeld test1;
public void run() {
Spielfeld test1 = new Spielfeld(null, null);
this.test1=test1;
while(weiter) {
test1.onDraw(null);
try {
sleep(200);
}
catch(InterruptedException e) { } } }
}
Code:
package de.tobi.strategiespiel;
import android.R.color;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
public class MainActivity extends Activity implements OnClickListener {
private Button test;
private Spielfeld zview;
private ThreadAusführung TA;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spielfeld zview = new Spielfeld(null, null);
ThreadAusführung TA = new ThreadAusführung();
test= (Button) findViewById(R.id.button1);
test.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v == test) {
zview.test(1);
TA.run();
}
// TODO Auto-generated method stub
}
}
Um zu erklären, was ich genau machen möchte:
Ich möchte eine Canvas erzeugen auf der ich mithilfe von Buttons z.B: Rechtecke bewegen!
In Der Main Activity wird eigentlich nur ein OnClickListener festgelegt. In der Activity Spielfeld wird erstmal die Canvas mit on Draw erstellt !
Dann eine Testmethode (public void Test) die eigentlich nur die int Variable Test ändern kann !
Dann ist da noch die innere Klasse ThreadAusführung! In der gibt es einen Thread der immer wieder die onDraw Methode ausführen soll!
Wenn ich die App im Emulgator ausführe komme ich bis zur Darstellung der Canvas mit einer Linie und wenn ich auf den Button test Drücke kommt folgendes:
01-28 20:06:56.622: E/AndroidRuntime(265): FATAL EXCEPTION: main
01-28 20:06:56.622: E/AndroidRuntime(265): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.tobi.strategiespiel/de.tobi.strategiespiel.MainActivity}: java.lang.NullPointerException
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.os.Handler.dispatchMessage(Handler.java:99)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.os.Looper.loop(Looper.java:123)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-28 20:06:56.622: E/AndroidRuntime(265): at java.lang.reflect.Method.invokeNative(Native Method)
01-28 20:06:56.622: E/AndroidRuntime(265): at java.lang.reflect.Method.invoke(Method.java:521)
01-28 20:06:56.622: E/AndroidRuntime(265): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-28 20:06:56.622: E/AndroidRuntime(265): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-28 20:06:56.622: E/AndroidRuntime(265): at dalvik.system.NativeStart.main(Native Method)
01-28 20:06:56.622: E/AndroidRuntime(265): Caused by: java.lang.NullPointerException
01-28 20:06:56.622: E/AndroidRuntime(265): at android.view.ViewConfiguration.get(ViewConfiguration.java:211)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.view.View.<init>(View.java:1814)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.view.View.<init>(View.java:1856)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.widget.ImageView.<init>(ImageView.java:112)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.widget.ImageView.<init>(ImageView.java:108)
01-28 20:06:56.622: E/AndroidRuntime(265): at de.tobi.strategiespiel.Spielfeld.<init>(Spielfeld.java:19)
01-28 20:06:56.622: E/AndroidRuntime(265): at de.tobi.strategiespiel.MainActivity.onCreate(MainActivity.java:26)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-28 20:06:56.622: E/AndroidRuntime(265): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-28 20:06:56.622: E/AndroidRuntime(265): ... 11 more
Kann mir wer helfen?
Ich glaube das Problem liegt im OnClickEvent, nur was genau??
Danke schonmal
paxis