App mit zwei Klassen in Android Studio

A

aspirin

Neues Mitglied
1
Ich habe Probleme beim erstellen einer kleinen Übungs-App mit Android Studio. Die Übung ist aus einem Buch, welches noch mit Eclipse arbeitet.

Nun habe ich folgende Klasse GraphikActivity.java erstellt:

Code:
package grafik1.carpelibrum.de.grafik1;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.RelativeLayout;


public class GrafikActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grafik);

        // selbst eingefügt
        RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout1);
        layout.addView(layout);
    }


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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
Dazu dann folgende XML Datei activity_grafik.xml:
Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".GrafikActivity">

    <de.carpelibrum.grafik.ZeichnenView
        android:id="@+id/layout1"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:background="#ffff00"/>
</RelativeLayout>
Aus der XML wird dann die Klasse ZeichenView.java generiert:
Code:
package de.carpelibrum.grafik;

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

/**
 * Created by lard on 29.01.15.
 */
public class ZeichnenView extends View {
    public ZeichnenView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    // nicht generierter Teil:
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 1. Paint-Objekt für Blau und 5Px Breite
        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);
    }
}
Der gekennzeichnete Bereich ist nicht generiert. Die Klasse taucht nicht im Projektbereich von Android Studio auf, ist aber unter "AndroidStudioProjects/GrafikTest/app/build/generated/source/r/debug/de/carpelibrum/grafik/ZeichnenView.java" zu finden.

In der Design-Ansicht der XML Datei wird der Bildschirmbereich dann auch korrekt gezeichnet - gelbes Quadrat mit blauer Diagonale. Wenn ich das ganze dann aber ausführe erhalte ich im Log folgende Meldung:

Code:
---- beginning of crash
01-29 16:58:15.182    1934-1934/grafik1.carpelibrum.de.grafik1 E/AndroidRuntime FATAL EXCEPTION: main
    Process: grafik1.carpelibrum.de.grafik1, PID: 1934
     java.lang.RuntimeException: Unable to start activity  ComponentInfo{grafik1.carpelibrum.de.grafik1/grafik1.carpelibrum.de.grafik1.GrafikActivity}:  android.view.InflateException: Binary XML file line #11: Error  inflating class de.carpelibrum.grafik.ZeichnenView
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
      Caused by: android.view.InflateException: Binary XML file line #11:  Error inflating class de.carpelibrum.grafik.ZeichnenView
            at android.view.LayoutInflater.createView(LayoutInflater.java:616)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
            at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
            at grafik1.carpelibrum.de.grafik1.GrafikActivity.onCreate(GrafikActivity.java:15)
            at android.app.Activity.performCreate(Activity.java:5933)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.NoSuchMethodException: <init> [class and
Auf dem Bildschirm des Emulators kommt die Meldung: "Unfortunaltely, Grafik has stopped".

Kann mir eventuell jemand auf die Sprünge helfen? Selber finde ich meinen Fehler leider nicht.
 
aspirin schrieb:
// selbst eingefügt
RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout1);
layout.addView(layout);
.

Das wird wohl falsch sein? Du addest dem Layout sich selbst?
 
Ich habe die beiden Zeilen auskommentiert, es bleibt aber bei der Fehlermeldung. Ich probiere mal weiter.
 
Ich vermute irgendwas stimmt mit dem Package- / den Package-Bezeichner/n nicht..
 

Ähnliche Themen

D
Antworten
23
Aufrufe
2.685
Data2006
D
5
Antworten
0
Aufrufe
1.177
586920
5
SaniMatthias
Antworten
19
Aufrufe
1.009
swa00
swa00
Zurück
Oben Unten