Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo Community,

ich schreibe eine Java App für Android. Es soll ein Ausgaben Manager werden.

In der MainActivity gibt es einen Button "Hinzufügen" auf dem ein SetOnClickListener wacht. Dieser funktioniert auch. Dort den Druck des Knopfes wird der setContentView auf eine zweite Activity gesetzt, die ebenfalls einen Button "Speichern" mit einem SetOnClickListener hat. Aber immer wenn ich die Anwendung startet, bricht sie ab OHNE FEHLERMELDUNG. Ich habe mal versucht, die zweite SetOnClickListener auszuschalten und dann läuft die App. Bitte um Hilfe.

Hier der Sourcecode:

package de.mariogundlach.brgr.ausgabenmanager;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.util.Log;

import static de.mariogundlach.brgr.ausgabenmanager.R.layout.add_data;

public class MainActivity extends AppCompatActivity {

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

        // Init all Elements
        Button btn_hinzufügen = (Button) findViewById(R.id.btn_add);
        Button btn_speichern = (Button) findViewById(R.id.btn_speichern);



        btn_hinzufügen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                open_add_data();

            }
        });

     btn_speichern.setOnClickListener(new View.OnClickListener() {
          @Override
           public void onClick(View v) {
                Log.i("Info","Say Hello");
          }
       });
    }


    public void open_add_data() {
        setContentView(add_data);
    }
}

 

Bin nicht mehr so drin in Android, aber bist du dir sicher, dass du auf den Button in der anderen View überhaupt zugreifen kannst an der Stelle? Ich würde spontan einfach mal behaupten, dass du eine NullReferenceException bekommst, wenn du versuchst, auf dem Button den Listener zu registrieren.

vor 7 Stunden schrieb mintmaroo:

Aber immer wenn ich die Anwendung startet, bricht sie ab OHNE FEHLERMELDUNG.

Kann nicht sein. Ich vermute, dass du entweder einen toten Thread auf deinem Device/Emulator beobachtest oder das Logging auf "info" oder irgendwas gestellt hast, aber nicht auf "error". 

vor 7 Stunden schrieb mintmaroo:

setContentView(add_data);

Ich würde zwischen Views nicht wechseln und nur das andere Layout setzen sondern, eine eigene Activity erstellen und per Intent darauf wechseln.

  • Autor

Also mein aktueller Stand ist: 

Ich habe eine neue Activity angelegt über das Android Studio mit Klick auf java/classes ... Und jetzt habe ich ein zweites Layout und eine zweite Activity. Das war der erste Fehler, den ich behoben habe.

Als zweites muss ich einen Intent anlegen, das habe ich nachgelesen. Gesagt, getan.

Jedoch stürzt die App nach dem Start ab, mit folgendem Fehler:

11:12    Emulator: emulator: WARNING: UpdateCheck: Failure: Error

11:12    Emulator: emulator: WARNING: UpdateCheck: Failure: Error

11:12    Emulator: qemu-system-i386.exe: Unable to open C:\Users\brgr\.android\avd\Nexus_5X_API_24.avd\data\misc\pstore\pstore.bin: Permission denied

 

Der Quellcode schaut aus wie folgt:

 

public class MainActivity extends AppCompatActivity {

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

        // Init all Elements
        Button btn_hinzufügen = (Button) findViewById(R.id.btn_add);



        btn_hinzufügen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                open_add_data();


            }
        });
    }



    public void open_add_data() {
        Intent i = new Intent(this, AddingActivity.class);
        startActivity(i);
        //setContentView(R.layout.activity_adding);
    }
}

 

vor 13 Minuten schrieb mintmaroo:

11:12    Emulator: emulator: WARNING: UpdateCheck: Failure: Error

11:12    Emulator: emulator: WARNING: UpdateCheck: Failure: Error

11:12    Emulator: qemu-system-i386.exe: Unable to open C:\Users\brgr\.android\avd\Nexus_5X_API_24.avd\data\misc\pstore\pstore.bin: Permission denied

 

Das ist ja ein Emulator-Problem und kein Problem deiner App. Entferne mal den Emulator im AVD-Manager und lege es neu an und aktiviere auch HAXM. Dann auch am besten den Build-Cache leeren (clean). 

Bearbeitet von pr0gg3r

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.