FaktenApp stürzt ab

  • Antworten:4
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 3

31.10.2016 09:59:03 via Website

Guten Morgen liebe Entwickler,

ich habe folgende "Herausforderungen" ...

ich habe eine Datenbank angelegt und möchte mit meiner Activity auf diese zugreifen. Über zwei Buttons kann ich dann in dieser Datenbank quasi vor oder zurück gehen.

Zum einen bricht meine App ab, wenn ich die Buttons (Code unten) drücke und damit über o. unter den Zähler i-- = -2 oder i++ = +6 bringe.
Ich komme da irgendwie nicht weiter... ich bräuchte also einen code, der mich vom letzten Satz wieder zum ersten bringt und umgekehrt.
Ich hoffe ihr könnt mir da weiter helfen... die Sätze sind übringens nur Beispiele :D

Hier der Code für die Activity:

public class Animals extends AppCompatActivity implements View.OnClickListener {

Button btn34;
TextView factBox;
datenbank factHolder = new datenbank();

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

    factBox = (TextView)findViewById(R.id.textView14);
    btn34 = (Button)findViewById(R.id.button23);
    btn34.setOnClickListener(this);


}

public void genFact(View view) {



    factBox.setText(factHolder.nextFact());

}

@Override
public void onClick(View v) {

    factBox.setText(factHolder.lastFact());
}

}

Und der Code für die Datenbank:

public class datenbank {

String facts[] = {"Putz dir die Nase.",
        "Hunde stammen vom Wolf ab!",
        "Wie geht es dir?",
        "Elefanten sind groß",
        "Florian ist toll",
        "Florian ist unglaublich",
        "omg das ist der wahnsinn"

};
int i =-1;

public String nextFact()
{

    i++;
    return facts[i];

}


public String lastFact()
{
    i--;
    return facts[i];
}

}

Dann habe ich noch etwas und zwar möchte ich die Buttons durch das allseits bekannte "wischen" ersätzen. Kann mir da jmd sagen, wie ich das mache ? Allerdings ist das nur zweitrangig da kann ich mich auch selbst irgendwie durch wurschteln.

So vielen Dank im Voraus für die Hilfe.

Mit freundlichen Grüßen
Florian Küpper

  • Forum-Beiträge: 2.214

31.10.2016 11:11:31 via Website

Hallo Florian,

willkommen im Forum .

Zum einen bricht meine App ab, wenn ich die Buttons (Code unten) drücke und damit über o. unter den Zähler i-- = -2 oder i++ = +6 bringe.
Ich komme da irgendwie nicht weiter... ich bräuchte also einen code, der mich vom letzten Satz wieder zum ersten bringt und umgekehrt.

Das ist recht einfach :
in der "Datenbank hast du nur 7 elemente drin - also 0 bis 6.

Du müsstest schon in deinen Funktionen "lastFact" & "nextFact" deinen Zähler (i) abfangen,
damit er nicht auf ein Element zugreift , was es gar nicht gibt.

Bsp

public String nextFact()
{
if (i < 6) i++;
//oder
//if ( i < (facts.size()-1)) i++;
return facts[i];
}

— geändert am 31.10.2016 11:14:08

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 3

31.10.2016 11:35:27 via Website

also wenn ich bei dem letzten Fact bin soll die App auf den ersten zurückspringen und umgekehrt... ich glaube das geht mit deinem Beispiel nicht oder? ...
Es soll praktisch eine endlos Schleife entstehen.

Trotzdem vielen Dank für deine Hilfe

mfg Flo

  • Forum-Beiträge: 2.214

31.10.2016 11:49:33 via Website

Hallo Flo,

dann musst du das so hier machen

public String nextFact()
{
if ( (i+1) > (facts.size()-1)) i = 0;
else
i++;
return facts[i];
}

P.S Dir fehlen die Grundlagen der Programmierung !

Du musst Dir unbedingt das Basiswissen aneignen , denn ohne Dieses wirst du recht schnell an deine Grenzen kommen und wir haben hier leider nicht die Zeit , dir diese Grundlagen beizubringen.

Für essentielle Programmierfragen stehen wir Dir natürlich sehr gerne zur Verfügung .
(Das hier war eine "Ausnahme" );

http://openbook.rheinwerk-verlag.de/javainsel/

— geändert am 31.10.2016 11:50:45

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 3

31.10.2016 12:24:46 via Website

Trotzdem danke für die Antwort... ein Problem habe ich noch "size" ist bei mir rot und es wird mir ein error angezeigt.
Kennst du denn vielleicht ein Forum, in dem meine Fragen passen würden?

Lg Flo