P
paxis
Fortgeschrittenes Mitglied
- 0
Hallo leute,
Ich habe nochmal angefangen mein Buch zu Android und Java durchzuarbeiten und wollte nun eine kleine App schreiben die etwas kombiniert!
Sie soll folgendes machen:
Ich klicke auf einen Button, der löst einen Timer aus, dieser erhöht wiederrum den Wert einer Progressbar! Sobald diese voll ist, wird ein neues Layout geladen und etwas in diesem Layout gezeichnet!
Hier mal der Code
Zeichnen:
LayoutMain:
Layout2:
Wenn ich die App im Emulator starte, kommt einfach nichts, nur ein weißer Bildschirm!
Errors im Debugger:
05-08 14:54:09.405: E/AndroidRuntime(765): FATAL EXCEPTION: main
05-08 14:54:09.405: E/AndroidRuntime(765): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.tobi.medien/de.tobi.medien.MainActivity}: java.lang.ClassCastException: de.tobi.medien.MainActivity cannot be cast to android.view.View$OnClickListener
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.os.Handler.dispatchMessage(Handler.java:99)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.os.Looper.loop(Looper.java:137)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-08 14:54:09.405: E/AndroidRuntime(765): at java.lang.reflect.Method.invokeNative(Native Method)
05-08 14:54:09.405: E/AndroidRuntime(765): at java.lang.reflect.Method.invoke(Method.java:511)
05-08 14:54:09.405: E/AndroidRuntime(765): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-08 14:54:09.405: E/AndroidRuntime(765): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-08 14:54:09.405: E/AndroidRuntime(765): at dalvik.system.NativeStart.main(Native Method)
05-08 14:54:09.405: E/AndroidRuntime(765): Caused by: java.lang.ClassCastException: de.tobi.medien.MainActivity cannot be cast to android.view.View$OnClickListener
05-08 14:54:09.405: E/AndroidRuntime(765): at de.tobi.medien.MainActivity.onCreate(MainActivity.java:30)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.Activity.performCreate(Activity.java:5104)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
05-08 14:54:09.405: E/AndroidRuntime(765): ... 11 more
irgendwas am Click listener aber was?
Edit:
Kaum hat mans abgeschickt:
Die Schnittstelle für den listener fehlte...
Aber jetzt stürtzt es beim Klicken ab!
Ich habe nochmal angefangen mein Buch zu Android und Java durchzuarbeiten und wollte nun eine kleine App schreiben die etwas kombiniert!
Sie soll folgendes machen:
Ich klicke auf einen Button, der löst einen Timer aus, dieser erhöht wiederrum den Wert einer Progressbar! Sobald diese voll ist, wird ein neues Layout geladen und etwas in diesem Layout gezeichnet!
Hier mal der Code
Code:
package de.tobi.medien;
import java.util.Timer;
import java.util.TimerTask;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
public class MainActivity extends Activity {
private Zeichnen zview;
public int info= 1;
Timer t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button Umschalten1 = (Button) findViewById(R.id.Umschalten);
Umschalten1.setOnClickListener((OnClickListener) this);
}
public void addieren(){
ProgressBar Fortschritt1 = (ProgressBar) findViewById(R.id.progressBar1);
if (Fortschritt1.getProgress() == 8) {
t.cancel();
setContentView(R.layout.layout2);
info = 0;
zview.onDraw(null);
}
else
Fortschritt1.setProgress(Fortschritt1.getProgress()+1);
}
@Override
public void onClick(View arg0) {
t = new Timer();
t.schedule(new Zeitgeber(),0, 3 * 1000);
// TODO Auto-generated method stub
}
}
class Zeitgeber extends TimerTask{
public void run() {
MainActivity a = new MainActivity();
try {
a.addieren();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Code:
package de.tobi.medien;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.AttributeSet;
import android.widget.ImageView;
public class Zeichnen extends ImageView{
public Zeichnen(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
MainActivity a = new MainActivity();
int tester = a.info;
if (tester == 0) {
Paint pinsel = new Paint();
pinsel.setColor(Color.rgb(64, 64, 255));
pinsel.setStrokeWidth(5);
Bitmap bild1 = BitmapFactory.decodeResource(getResources(), R.drawable.bild1);
canvas.drawBitmap(bild1, getMatrix(), null);
}
}
}
Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/Umschalten"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="Orte!" />
<ProgressBar
android:id="@+id/progressBar1"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:max="8"
android:progress="0" />
<TextView
android:id="@+id/textView1"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/Umschalten"
android:layout_marginTop="55dp"
android:text="Handynummer:" />
<EditText
android:id="@+id/editText2"
android:layout_width="500dp"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/progressBar1"
android:layout_below="@+id/textView2"
android:layout_marginTop="33dp"
android:ems="10" />
<EditText
android:id="@+id/editText1"
android:layout_width="500dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText2"
android:layout_alignBottom="@+id/editText2"
android:layout_toLeftOf="@+id/editText2"
android:ems="10" />
<TextView
android:id="@+id/textView2"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_toRightOf="@+id/editText1"
android:text="GPS Daten?:" />
</RelativeLayout>
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/layout2">
<de.tobi.medien.Zeichnen
android:layout_width="fill_parent"
android:layout_height="200dp"
android:background="#ffffff"
/>
</LinearLayout>
Errors im Debugger:
05-08 14:54:09.405: E/AndroidRuntime(765): FATAL EXCEPTION: main
05-08 14:54:09.405: E/AndroidRuntime(765): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.tobi.medien/de.tobi.medien.MainActivity}: java.lang.ClassCastException: de.tobi.medien.MainActivity cannot be cast to android.view.View$OnClickListener
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.os.Handler.dispatchMessage(Handler.java:99)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.os.Looper.loop(Looper.java:137)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-08 14:54:09.405: E/AndroidRuntime(765): at java.lang.reflect.Method.invokeNative(Native Method)
05-08 14:54:09.405: E/AndroidRuntime(765): at java.lang.reflect.Method.invoke(Method.java:511)
05-08 14:54:09.405: E/AndroidRuntime(765): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-08 14:54:09.405: E/AndroidRuntime(765): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-08 14:54:09.405: E/AndroidRuntime(765): at dalvik.system.NativeStart.main(Native Method)
05-08 14:54:09.405: E/AndroidRuntime(765): Caused by: java.lang.ClassCastException: de.tobi.medien.MainActivity cannot be cast to android.view.View$OnClickListener
05-08 14:54:09.405: E/AndroidRuntime(765): at de.tobi.medien.MainActivity.onCreate(MainActivity.java:30)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.Activity.performCreate(Activity.java:5104)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-08 14:54:09.405: E/AndroidRuntime(765): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
05-08 14:54:09.405: E/AndroidRuntime(765): ... 11 more
irgendwas am Click listener aber was?
Edit:
Kaum hat mans abgeschickt:
Die Schnittstelle für den listener fehlte...
Aber jetzt stürtzt es beim Klicken ab!
Zuletzt bearbeitet: