suche HILFE: App wird angehalten

H

Hendrix95

Neues Mitglied
0
Hallo Zusammen,

ich hab meine erste Android App teilweise programmiert und wollte nun versuchen es über mein Handy auszuprobieren. Es klappt insofern dass die App startet und der Startbildschirm mit dem "Start" Button angezeigt wird. Wenn ich aber diesen Button drücke wird die App geschlossen und die Meldung "app wurde angehalten" angezeigt.

An was könnte es liegen? Würde mich über Anregungen freuen

Grüße
 
NullPointerException.

Ohne Code bzw. genauer Fehlermeldung kann Dir hier keiner wirklich helfen. :(
 
es wird keine Fehlermeldung angezeigt .. Außer wenn sich die App dann schließt.
könnte des style sheet und das manifest reinstellen wenn des was helfen sollte
[doublepost=1476271549,1476266281][/doublepost]10/12 13:21:37: Launching app
$ adb push C:\Users\Shanks\AndroidStudioProjects\KissTheFrog\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.kissthefrog.shanks.kissthefrog
$ adb shell pm install -r "/data/local/tmp/com.kissthefrog.shanks.kissthefrog"
Success


$ adb shell am start -n "com.kissthefrog.shanks.kissthefrog/com.kissthefrog.shanks.kissthefrog.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Client not ready yet..Waiting for process to come online
Waiting for process to come online
Connected to process 2256 on device SammyApp [emulator-5554]
I/art: Not late-enabling -Xcheck:jni (already on)
W/art: Unexpected CPU variant for X86 using defaults: x86_64
W/gralloc_ranchu: Gralloc pipe failed

[ 10-12 11:23:21.807 2256: 2256 D/ ]
HostConnection::get() New Host Connection established 0x7ffee9dc6a00, tid 2256
I/OpenGLRenderer: Initialized EGL, version 1.4
D/OpenGLRenderer: Swap behavior 1
D/AndroidRuntime: Shutting down VM


--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.kissthefrog.shanks.kissthefrog, PID: 2256
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.kissthefrog.shanks.kissthefrog.MainActivity.fillTextView(MainActivity.java:101)
at com.kissthefrog.shanks.kissthefrog.MainActivity.update(MainActivity.java:107)
at com.kissthefrog.shanks.kissthefrog.MainActivity.initRound(MainActivity.java:96)
at com.kissthefrog.shanks.kissthefrog.MainActivity.newGame(MainActivity.java:75)
at com.kissthefrog.shanks.kissthefrog.MainActivity.startGame(MainActivity.java:50)
at com.kissthefrog.shanks.kissthefrog.MainActivity.onClick(MainActivity.java:36)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22260)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Application terminated.


Okay des wäre die Fehlermeldung wenn ich es mit dem Emulator öffne.
Kann irgend jemand damit was anfangen?
Wäre sehr verbunden

Grüße
 
Der Code der Main Activity wäre nicht schlecht.

Aber wenn ich das so richtig interpretieren versuchst du beim Button Klick ein Text zu setzten, auf einem TextView was zu dem Zeitpunkt nicht gibt. Zeile 101 in der MainActivity

Gruß
 
Code:
private void startGame() {
    newGame();
}


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    showStartFragment();
}


/**
* A native method that is implemented by the 'native-lib' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();


private int points;
private int round;
private int countdown;

private void newGame() {
    points = 0;
    round = 1;
    initRound();
}

private void initRound() {
    countdown = 10;
    ViewGroup container = (ViewGroup) findViewById(R.id.container);
    WimmelView wv = new WimmelView(this);
    container.addView(wv, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    wv.setImageCount(8*(10+round));
    dickbutt = new ImageView(this);
    dickbutt.setId(DICKBUTT_ID);
    dickbutt.setImageResource(R.drawable.dickbutt);
    dickbutt.setScaleType(ImageView.ScaleType.CENTER);
    float scale = getResources().getDisplayMetrics().density;
    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(Math.round(64*scale),Math.round(61*scale));
    lp.gravity = Gravity.TOP + Gravity.LEFT;
    lp.leftMargin = rnd.nextInt(container.getWidth()-64);
    lp.topMargin = rnd.nextInt(container.getHeight()-61);
    dickbutt.setOnClickListener(this);
    container.addView(dickbutt, lp);
    handler.postDelayed(runnable, 1000-round*50);
    update();
}

private void fillTextView(int id, String text) {
    TextView tv = (TextView) findViewById(id);
   tv.setText(text);
}



private void update() {
    fillTextView(R.id.points, Integer.toString(points));
    fillTextView(R.id.round, Integer.toString(round));
    fillTextView(R.id.countdown, Integer.toString(countdown * 100));
}

private void showStartFragment(){
    ViewGroup container = (ViewGroup)findViewById(R.id.container);
    container.removeAllViews();
    container.addView(
            getLayoutInflater().inflate(R.layout.fragment_start,null));
    container.findViewById(R.id.start).setOnClickListener(this);
}

private void showGameOverFragment(){
    ViewGroup container = (ViewGroup)findViewById(R.id.container);
    container.addView(
            getLayoutInflater().inflate(R.layout.fragment_gameover,null));
    container.findViewById(R.id.NewGame).setOnClickListener(this);
}

public interface OnClickListener{
    void onClick(View v);
}

private void countdown() {
    countdown--;
    update();
    if(countdown<=0){
        dickbutt.setOnClickListener(null);
        showGameOverFragment();
    } else {
        handler.postDelayed(runnable,  100-round*50);
    }
}

private Runnable runnable = new Runnable() {
    @override
    public void run() {
        countdown();
    }
};


is ein teil meiner activity Zeile 101 ist grün makiert
 
Zuletzt bearbeitet von einem Moderator:
Bearbeitet von: Kiwi++Soft - Grund: Bitte Code-Tags verwenden!
NullPointerException, da war ja meine Ahnung richtig ;)

TextView tv = (TextView) findViewById(id); In der Zeile liegt das Problem. Hier sucht die App ein View mit einer bestimmten ID. Wenn die Funktion keinen passenden View findet, weil keiner die Id hat, liefert die Methode den Wert null zurück. Und in der nächsten Zeile wird eine Methode eines nicht vorhandenen Objekt aufgerufen. Die Folge ist ein NullPointerException.

NullpointerException - Was tun?
 
Ahh okay vielen dank dafür. Er greift also auf die Falsche id zu .
Dumme Frage und ich hab mir die Links auch schon angeschaut kann aber jz die richtige ID nicht finden sieht man die in der activity_main ?
 
ich hab in meine activity main geschaut und tatsächlich gefunden das countdown flasch geschrieben wurde. Hätte gedacht es ist der grund das der Textview eine falsche ID anpeilt aber nachdem ich es behoben habe zeigt es immernoch die gleichen fehler an...
 
in deiner activity_main fügst du bei dem Textview folgendes ein:
Code:
android:id="@+id/textViewdeineBennung"
Dann kannst du folgendes verwenden:

Code:
TextView tv = (TextView) findViewById(R.id.textViewdeineBennung);

Alles aus dem Kopf geschrieben aber so ähnlich muss es sein.
 
in meiner MainActivity:

private void update() {
fillTextView(R.id.points, Integer.toString(points));
fillTextView(R.id.round, Integer.toString(round));
fillTextView(R.id.countdown, Integer.toString(countdown * 100));
}

private void fillTextView(int id, String text) {
TextView tv = (TextView) findViewById(R.id.points);
TextView tv1 = (TextView) findViewById(R.id.round);
TextView tv2 = (TextView) findViewById(R.id.countdown);
tv.setText(text);
tv1.setText(text);
tv2.setText(text);
}


In meiner activity_main

<TextView
android:text="@string/points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/points"
android:layout_marginBottom="@dimen/activity_horizontal_margin"
android:layout_gravity="center_horizontal"
android:textColor="@color/colorAccent"
android:textSize="32sp" />

<TextView
android:text="@string/round"
android:id="@+id/round"
android:layout_width="89dp"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:textColor="@color/colorAccent" />

<TextView
android:text="@string/countdown"
android:layout_width="96dp"
android:layout_height="wrap_content"
android:id="@+id/countdown"
android:layout_gravity="end"
android:textColor="@color/colorAccent"
android:textSize="32sp"
tools:ignore="DuplicateIds,HardcodedText"
tools:text="00000" />


So hab ichs mir auch gedacht und so hab ichs auch geschrieben .. HIlft aber nichts
 
Hallo Hendrix,

grunsätzlich sieht das ja gut aus ...
Aber irgendwo musst du doch was haben ......

gehe mal schritt für schritt vor
a) ist das Layout auch das , was du vorher in setContentview gesetzt hast ??
b) gib mal in FillTextview feste strings ein keine Parameter ( du übernimmst im übrigen nicht die id)
c) und wenn alles nicht hilft : mach doch mal ein Debugging step by step.

P.S ich kann mir nicht vorstellen , dass es kein errorlog mit zeilenangabe gibt

lg
Stefan
 
Erst einmal danke an alle für ihre Beiträge!
Hab den Fehler gefunden nach langer Suche .
Das Problem war das bei meiner activity_main die TextViews im container framelayout mit drin waren
 

Ähnliche Themen

D
Antworten
17
Aufrufe
409
datNeMo
D
Manny87
  • Manny87
Antworten
11
Aufrufe
166
swa00
swa00
B
Antworten
4
Aufrufe
495
bb321
B
Zurück
Oben Unten