Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Android] App crasht

Pagina: 1
Acties:

  • timmie1
  • Registratie: Juni 2008
  • Laatst online: 10:03
Ik heb met behulp van een tutorial geprobeerd een game-app voor Android te maken. Ik heb alle stappen uitgevoerd die werden uitgelegd en de uitleg er (meestal) ook bij begrepen, echter begrijp ik niet waarom de app crashed. Er waren geen syntaxfouten, tenminste niet wat de IDe liet zien. Deze tutorials heb ik gebruikt:
http://code.tutsplus.com/...r-interface--mobile-21853

Als ik hem in een emulator open, krijg ik keurig het startscherm. Als ik echter op de startknop druk, freezed het beeld en crashed de app. Ik zie dan in Logcat de volgende melding:

code:
1
2
3
4
5
6
7
8
07-15 06:52:11.140: E/AndroidRuntime(1006): FATAL EXCEPTION: main
07-15 06:52:11.140: E/AndroidRuntime(1006): Process: com.example.mijnapp, PID: 1006
07-15 06:52:11.140: E/AndroidRuntime(1006): java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.Button
07-15 06:52:11.140: E/AndroidRuntime(1006):     at com.example.app.LetterAdapter.getView(LetterAdapter.java:55)
07-15 06:52:11.140: E/AndroidRuntime(1006):     at android.widget.AbsListView.obtainView(AbsListView.java:2263)
07-15 06:52:11.140: E/AndroidRuntime(1006):     at android.widget.GridView.onMeasure(GridView.java:1044)
07-15 06:52:11.140: E/AndroidRuntime(1006):     at android.view.View.measure(View.java:16497)
etc...


Hieruit kan ik opmaken dat er dus iets niet goed gaat met Lineairview en de Button. Ik snap echter niet wat die Lineairview kan doen met een button zodat een hele app crashed? |:(

Op Stack staat dit erover:
Thrown to indicate that the code has attempted to cast an Object to a subclass of which it is not an instance. For example, the following code generates a ClassCastException:
Maar waar zou die fout dan moeten staan? En hoe zou ik het evt kunnen oplossen? Is het een fout in mijn Eclipse, aangezien hij bij anderen wel goed doet(volgens de reacties)? Of ligt het aan de android versie?

Spiegeltje, spiegeltje aan de wand, wie heeft de mooiste telefoon van het land?


  • WernerL
  • Registratie: December 2006
  • Nu online
Aan de error te zien probeer je een LinearView te typecasten naar een Button. ;)
Kun je ook eens wat relevante code posten? Een stuk waar oa regel 55 van LetterAdapter.java instaat. Dan kunnen we misschien achterhalen wat er fout gaat.

Roses are red, violets are blue, unexpected '{' on line 32.


  • timmie1
  • Registratie: Juni 2008
  • Laatst online: 10:03
WernerL schreef op dinsdag 15 juli 2014 @ 13:25:
Aan de error te zien probeer je een LinearView te typecasten naar een Button. ;)
Kun je ook eens wat relevante code posten? Een stuk waar oa regel 55 van LetterAdapter.java instaat. Dan kunnen we misschien achterhalen wat er fout gaat.
Natuurlijk:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package com.example.myapp;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;

/**
 * 
 * 
 * 
 * 
 */

public class LetterAdapter extends BaseAdapter {

    //store letters
    private String[] letters;
    //inflater for button layout
    private LayoutInflater letterInf;

    public LetterAdapter(Context c) {
        //instantiate alphabet array
        letters=new String[26];
        for(int a=0; a<letters.length; a++){
            letters[a]=""+(char)(a+'A');
        }
        //specify layout to inflate
        letterInf = LayoutInflater.from(c);
    }

    @Override
    public int getCount() {
        return letters.length;
    }

    @Override
    public Object getItem(int arg0) {
        return null;
    }

    @Override
    public long getItemId(int arg0) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //create a button for the letter at this position in the alphabet
        Button letterBtn;
        if (convertView == null) {  
            //inflate the button layout
            letterBtn = (Button)letterInf.inflate(R.layout.letter, parent, false);
        } else {
            letterBtn = (Button) convertView;
        }
        //set the text to this letter
        letterBtn.setText(letters[position]);
        return letterBtn;
    }

}


Die letterBtn gaat over een soort toetsenbord dat je maakt om een letter in te voeren

Spiegeltje, spiegeltje aan de wand, wie heeft de mooiste telefoon van het land?


  • markieo
  • Registratie: Maart 2012
  • Laatst online: 21-11 12:52
Kun je ook even je letter.xml laten zien? Want daaraan kunnen we zien of het een button of een linearlayout is.

  • timmie1
  • Registratie: Juni 2008
  • Laatst online: 10:03
markieo schreef op dinsdag 15 juli 2014 @ 13:52:
Kun je ook even je letter.xml laten zien? Want daaraan kunnen we zien of het een button of een linearlayout is.
Java:
1
2
3
4
5
6
7
8
9
<?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" >
    

</LinearLayout>

Spiegeltje, spiegeltje aan de wand, wie heeft de mooiste telefoon van het land?


  • markieo
  • Registratie: Maart 2012
  • Laatst online: 21-11 12:52
Je krijgt de fout omdat letter.xml bestaat uit een linearlayout en die probeer je te casten naar een button.
Ik heb even je tutorial doorgelezen. En in de letter.xml hoort een button te staan zoals je kunt zien:

code:
1
2
3
4
5
<Button xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="35dp"
  android:background="@drawable/letter_up"
  android:onClick="letterPressed" />

  • timmie1
  • Registratie: Juni 2008
  • Laatst online: 10:03
markieo schreef op dinsdag 15 juli 2014 @ 13:59:
Je krijgt de fout omdat letter.xml bestaat uit een linearlayout en die probeer je te casten naar een button.
Ik heb even je tutorial doorgelezen. En in de letter.xml hoort een button te staan zoals je kunt zien:

code:
1
2
3
4
5
<Button xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="35dp"
  android:background="@drawable/letter_up"
  android:onClick="letterPressed" />
Zucht, eroverheen gelezen dus? :9
Twee mensen zien dus blijkbaar meer dan 1 :P

Dat was de oplossing, inderdaad. Bedankt!

Nog een vraagje: Waarom doet android dit:

code:
1
07-15 08:35:01.904: I/Choreographer(380): Skipped 30 frames!  The application may be doing too much work on its main thread.

Spiegeltje, spiegeltje aan de wand, wie heeft de mooiste telefoon van het land?


  • tomcool
  • Registratie: November 2009
  • Laatst online: 10:31
Android zegt dat jij eigenlijk teveel werk doet in de 'main' thread. En dat hij niet de gewenste refresh snelheid kan halen.

Daar zou ik mij niet al te veel zorgen over maken. Zeker niet als je deze melding alleen krijgt als je de app opstart.
Mocht deze melding vaker voorkomen dat zal je gaan moeten werken met threads

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 02:31
Maar waar zou die fout dan moeten staan?
Tip voor de volgende keer: dat staat dus letterlijk in je stacktrace, ik hoop dat je dat ook gezien hebt?

Roomba E5 te koop

Pagina: 1