2010-12-28 11 views
0

ich einen Android-Homescreen entwickelt, scheint der Code richtig, aber wenn ich das Projekt, das ich die folgende Fehlermeldung aus:Android Homescreen-Projekt, Runtime

java.lang.RuntimeException: 
Unable to instantiate activity ComponentInfo{com.matthieu.launcher/ 
com.matthieu.launcher.DragableSpace}: 
java.lang.InstantiationException: com.matthieu.launcher.DragableSpace 

ist das komplette Protokoll: http://pastebin.com/iYtYW2W6

Der Code ist direkt aus dem Android Launcher.

DragableSpace: http://pastebin.com/jpWDtFPF

MainActivity:

public class MainActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     DragableSpace space = new DragableSpace(this.getApplicationContext()); 
     setContentView(space); 
    } 
} 

attr.xml in Werte Ordner:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="DragableSpace"> 
     <attr name="default_screen" format="integer"/> 
    </declare-styleable> 
</resources> 

Drei XML-Dateien initial_ Bildschirm, left_screen und right_screen, die alle denselben Code haben abgesehen von der ID:

<LinearLayout android:id="@+id/center" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical"> 
</LinearLayout> 

Manifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.matthieu.launcher" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".MainActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

Irgendwelche Ideen, wie man das Problem lösen?

+0

Fügen Sie Ihr Manifest hinzu. – Emile

+0

Ihre Pastebin-Post Ihrer Stack-Trace ist nicht die vollständige Stack-Trace, dh es hat die Zeile 12-26 10: 59: 42.537: FEHLER/AndroidRuntime (4220): ... 11 mehr .. was bedeutet, dass einige Stapelinformationen ist missin, Wenn Sie in der Lage sind, die volle Stack-Trace aufzustellen, könnte es jemand besser verstehen, wo der Fehler auftritt. – Emile

+0

Ich weiß nicht, wie die 11 mehr zu offenbaren, fügte ich die Textansicht wie von John Smith in seiner Antwort beschrieben und ab 16.06 bekomme ich einen anderen Fehler, http://pastebin.com/LHfbHsvm –

Antwort

1

Hatte einen kurzen Blick auf den Code, wie es jetzt ist. Nullpointer in Zeile 169 von DragableSpace, da kein Kind Blick - dieses Problem beheben, indem ein Kind Blick in der MainActivity fügt hinzu:

TextView child = new TextView(this);   
    child.setText("This is a Test"); 
    space.addView(child); 

So, jetzt der Code ausgeführt und protokolliert die Berührungsereignisse zu LogCat aber nichts erscheint (I passieren Ich vermute, Sie wollen 3 Leerzeichen, die auf den Bildschirm gezogen und neu positioniert werden können - einige anfängliche Probleme, denke ich, scheint der SNAP_VELOCITY Wert von 1000 für einige schleppende Gesten etwas hoch zu sein, keine der Layout-XML-Dateien scheint zu sein verwendet, und wenn der aktuelle "Bildschirm" die volle Breite und Höhe des Geräts ist, wohin wird es gezogen?

Aktualisiert: der früheren Post XML-Layout als main.xml hinzufügen:

<?xml version="1.0" encoding="utf-8"?> 

, nun in der MainActivity, stellen Sie den Inhalt wie:

setContentView(R.layout.main); 

Um es einfacher zu sehen, was passiert, stelle ich die Hintergrundfarben auf verschiedene Farben ein - addiere Die folgenden Farben zu der Datei strings.xml:

<color name="green">#21d081</color> 
<color name="blue">#00A0FF</color> 
<color name="orange">#EA6700</color> 

Und bearbeiten Sie die Bildschirm-XML-Dateien, um eine Farbe z. im linken Bildschirm.XML-Datei, fügen Sie das folgende Attribut:

android:background="@color/blue" 

Und verwenden Sie eine andere Farbe für die initial_screen.xml und der right_screen.xml und wenn Sie das Projekt ausführen, können Sie über den Bildschirm ziehen und einen neuen Bereich offenbaren.

alt text

+0

Meine erste Version war komplett anders als diese Version des Android-Homescreen, so dass ich nicht wirklich sicher bin, was zu beheben ist. Schauen Sie sich einen früheren Beitrag an http://stackoverflow.com/questions/3467461/developing-an-android-homescreen die Version scheint für einige Leute zu funktionieren, aber ich weiß nicht warum –

+0

Ich habe versucht, die Textansicht, die App tut nicht mehr stürzen, aber das Spiegeln funktioniert nicht –

+0

Ok, jetzt verstehe ich - und es funktioniert jetzt ok. Fügen Sie das Layout-XML, das in dem früheren Beitrag identifiziert wurde, als Layout main.xml hinzu und verwenden Sie dieses, um den Inhalt in der Aktivität festzulegen - ich habe meine frühere Antwort bearbeitet. –

0

DragableSpace ist ein ViewGroup. DragableSpace ist kein Activity. Homescreens sind Aktivitäten. Daher kann DragableSpace kein Startbildschirm sein.

+0

Ich dachte darüber nach. Ich habe eine Aktivitätsklasse erstellt. Wie füge ich DragableSpace (ViewGroup) zur Aktivität hinzu? –

+0

@ArtWorkAD: 'setContentView()', wie bei jeder anderen Aktivität. – CommonsWare

+0

hm es funktioniert immer noch nicht für mich –

1

Auf einer Seite zur Kenntnis, und dies eher eine Beobachtung ist, in Ihrem DragableSpace Code i zwei Dinge bemerkt habe.

  1. In öffentlichen DragableSpace (Context Kontext AttributeSet attrs) {... Sie haben nicht genannt a.recycle(); nachdem Sie auf alle Ihre Eigenschaften von "atomeStyledAttributes" zugegriffen haben. Das ist schlecht, denke ich.

  2. Ich bin mir nicht ganz sicher, wie ich gerade Java abgeholt habe, aber ich fand, dass ich super.DragableSpace (...) zu this.DragableSpace (...) ändern musste. Dies könnte für meine Komponente einfach gewesen sein, war sich aber nicht ganz sicher, ob das richtig war oder nicht.

+0

Ich habe die Manifest-Quelle hinzugefügt –

Verwandte Themen