TextView verzögert ein-/ausblenden

  • Antworten:10
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 11

15.06.2019, 22:48:05 via Website

Guten Abend,

ich muss mit Mitschülern eine kleine App entwickeln und mein Part ist es eine vereinfachtere Version des Spieles "Stop Watchers" (bekannt aus Wii Party) zu programmieren.

So weit klappt alles auch, aber ich habe zwei Probleme / Schwierigkeiten:

  1. Ich muss den Timer (also das TextView) ausblenden, was ich mit "setVisibility()" auch hinbekommen habe, jedoch möchten wir (wie in dem Spiel selbst), dass der Timer erst nach z.B. 3 sec ausgeblendet wird. Da ich keine Ahnung habe wie das funktioniert und auch nichts im Internet gefunden habe, frage ich mal hier: Hat irgendeiner eine Ahnung wie ich das machen kann?

  2. Da wir mehrere Minispiele zusammenfügen müssen, wollten wir per Button klick auf eine neue Activity kommen. Denn mir bekannten Code dafür habe ich auch angewandt, jedoch wenn ich die App starte und dann auf den Button klicke schließt sich die App.

(Code am Ende zu finden)

Ich freue mich auf jeden Beitrag!

Vielen Dank schonmal im Voraus

Mit besten Grüßen
Milos

  1. `public void pause(View v) {

    TimeBuff += MillisecondTime;
    
    handler.removeCallbacks(runnable);
    
    // Timer wieder einblenden
    
    Timer.setVisibility(View.VISIBLE);
    
    //restliches Ausblenden, damit nurnoch Timer zu sehen ist
    start.setVisibility(View.INVISIBLE);
    pause.setVisibility(View.INVISIBLE);
    Anzeige.setVisibility(View.INVISIBLE);
    
    // next Button einblenden
    next.setVisibility(View.VISIBLE);`
    
  2. Main Activity (mit Button verknüpft):

    // neues Minispiel öffnen
    public void next(View v) {

    Intent tap = new Intent(this, Activity2.class);
    startActivity(tap);
    

    }

    Activity2:
    package com.example.milos.orangensafttrinkspiel;

    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;

    public class Activity2 extends AppCompatActivity {

    Button test;
    TextView Ausblenden;

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.t);

    Intent tap = getIntent();
    
    test = findViewById(R.id.btn_test);
    Ausblenden = findViewById(R.id.tv_ausb);
    

    }

    public void test(View v){

    Ausblenden.setVisibility(View.INVISIBLE);
    

    }

    }

— geändert am 15.06.2019, 23:40:37 durch Moderator

Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.479

15.06.2019, 22:55:56 via Website

Hallo Milos,

herzlich wilkommen hier im Forum :)


Um die TextView des Timers später einblenden zu lassen, musst du den Funktionsaufruf verzögern.
Am besten geht das mit Handler#postDelayed(Runnable,millis)

Wenn die App beim öffnen einer neuen Activity abstürzt, dann ist in dieser Activity was falsch.
Ohne ErrorLog also LogCat der Exception kann ich nur raten. Bitte poste diesen mal hier.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 11

15.06.2019, 23:13:43 via Website

Guten Abend Pascal,

vielen Dank für die schnelle Antwort. Ich bin leider nicht sehr erfahren im Programmieren, da ich nicht viel aus dem Unterricht mitnehmen konnte und auch nicht viel in meiner Freizeit dafür gemacht habe. Deshalb würde ich mich freuen, wenn du mir näher erläutern könntest wo und wie ich "Handler#postDelayed(Runnable,millis)" einsetzten kann.

Zudem habe ich nicht ganz verstanden, was genau ich nun posten soll. Fehler sind beim "builden" nicht aufgetaucht.

Vielen Dank schonmal im Voraus

Mit besten Grüßen
Milos

Hilfreich?
Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.479

15.06.2019, 23:44:10 via Website

Hallo Milos,

das lässt sich ganz einfach machen:

Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
      @Override
      public void run() {
       //Hier deine TextView einblenden
      }
    }, 1500);//Zeit wie lange der Aufruf verzögert werden soll.

Der Code muss dan die stelle, ab der an es 3 Sekunden bis zum anzeigen des Timers sein sollen, also z.b. ab start des Spiels.

Zum Fehler: Es gibt nicht nur Build Fehler sondern auch Runtime Fehler die erst auf dem Gerät selber auftreten.
Du hast vermutlich einen davon.

Um den eigentlichen Fehler identifizieren zu können, musst die die App üder Android Studio auf einem Emulator oder per USB an einem richtigen Gerät starten und dir dann die Log ausgabe in AS anschauen. Das Tool nennt sich "LogCat".
Nur damit es es möglich herauszuinden was der Fehler ist.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 11

15.06.2019, 23:54:25 via Website

Guten Abend Pascal,

nochmals vielen Dank für die schnelle Rückmeldung. Das mit dem Delay hat geklappt, danke.

LogCat habe ich auch gefunden, jedoch läuft da eine Menge durch. Soll ich einmal die ganzen rot markierten Zeilen posten, nachdem ich die App gestartet habe?

Vielen Dank im Voraus

MfG
Milos

Hilfreich?
Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.479

16.06.2019, 09:07:28 via App

Genau, die roten Zeilen nach dem App Absturz

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 11

16.06.2019, 13:18:54 via Website

Guten Mittag,

im Folgenden finden Sie die "errors" die nach dem klicken auf den "next Button" (um zur nächsten activity zu gelangen" aufgetaucht sind:

2019-06-16 13:20:35.595 11157-11157/com.example.milos.orangensafttrinkspiel E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.milos.orangensafttrinkspiel, PID: 11157
java.lang.IllegalStateException: Could not execute method for android:onClick
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:389)
    at android.view.View.performClick(View.java:7125)
    at android.view.View.performClickInternal(View.java:7102)
    at android.view.View.access$3400(View.java:801)
    at android.view.View$PerformClick.run(View.java:27301)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7319)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384)
    at android.view.View.performClick(View.java:7125) 
    at android.view.View.performClickInternal(View.java:7102) 
    at android.view.View.access$3400(View.java:801) 
    at android.view.View$PerformClick.run(View.java:27301) 
    at android.os.Handler.handleCallback(Handler.java:883) 
    at android.os.Handler.dispatchMessage(Handler.java:100) 
    at android.os.Looper.loop(Looper.java:214) 
    at android.app.ActivityThread.main(ActivityThread.java:7319) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934) 
 Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.milos.orangensafttrinkspiel/com.example.milos.orangensafttrinkspiel.Activity2}; have you declared this activity in your AndroidManifest.xml?
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2049)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1709)
    at android.app.Activity.startActivityForResult(Activity.java:5173)
    at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:68)
    at android.app.Activity.startActivityForResult(Activity.java:5131)
    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:744)
    at android.app.Activity.startActivity(Activity.java:5502)
    at android.app.Activity.startActivity(Activity.java:5470)
    at com.example.milos.orangensafttrinkspiel.MainActivity.next(MainActivity.java:119)
    at java.lang.reflect.Method.invoke(Native Method) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384) 
    at android.view.View.performClick(View.java:7125) 
    at android.view.View.performClickInternal(View.java:7102) 
    at android.view.View.access$3400(View.java:801) 
    at android.view.View$PerformClick.run(View.java:27301) 
    at android.os.Handler.handleCallback(Handler.java:883) 
    at android.os.Handler.dispatchMessage(Handler.java:100) 
    at android.os.Looper.loop(Looper.java:214) 
    at android.app.ActivityThread.main(ActivityThread.java:7319) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934) 

2019-06-16 13:20:35.671 2264-2403/system_process E/InputDispatcher: channel '6a7d023 com.example.milos.orangensafttrinkspiel/com.example.milos.orangensafttrinkspiel.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
2019-06-16 13:20:36.340 2470-11697/com.google.android.gms.persistent E/ctxmgr: [ProducerStatusImpl]updateStateForNewContextData: inactive, contextName=7 [CONTEXT service_id=47 ]
2019-06-16 13:20:36.521 2470-2470/com.google.android.gms.persistent E/BeaconBle: Missing BluetoothAdapter
2019-06-16 13:20:36.570 2470-2470/com.google.android.gms.persistent E/BeaconBle: Scan couldn't start for Places

Vielen Dank im Voraus

MfG
Milos

— geändert am 16.06.2019, 13:21:22

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 775

16.06.2019, 13:21:54 via Website

Hallo

 jedoch wenn ich die App starte und dann auf den Button klicke schließt sich die App. 

Frage hierzu bei welchen Button stürst sie ab? bei einem Button in der MainActivity oder in deiner zweiten Activity?
Wenn deine zweite wirklich so aus sieht wie im ersten Post sollte es gehen. Da würde ich mal darauf tippen das du vergessen hast die Activity im Manifest einzutragen.

    **<activity android:name=".Activity2"></activity>**

Auch der Aufruf der zweiten Activity aus der Main ist Ok.

Das mit dem Timer hat dir ja Pascal schon gezeigt.

Hilfreich?
Diskutiere mit!
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.435

16.06.2019, 13:30:25 via Website

Hallo milos.buttler,

herzlich willkommen hier im Forum (*)

Hier steht der Fehler eindeutig:

Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.milos.orangensafttrinkspiel/com.example.milos.orangensafttrinkspiel.Activity2}; have you declared this activity in your AndroidManifest.xml?

Jokel hat dir dazu schon seine Vermutung geäußert.

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Download Samsung Firmware Tool

Meine Wunschliste

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 11

16.06.2019, 13:34:31 via Website

Guten Mittag,

ihr hattet recht, hatte ich vergessen einzutragen. Nun hab ich es drin und es funktioniert auch einwandfrei.

Vielen Dank euch allen für die hilfreichen Antworten!

Mit besten Grüßen
Milos

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 775

16.06.2019, 14:09:56 via Website

Hallo ich hatte das mit dem Manifest geschrieben ohne dein log gelesen zu haben. War aber richtig.

Hilfreich?
Diskutiere mit!