Brauche Hilfe beim Programmieren! Programm ganz schliessen.

  • Antworten:25
  • Bentwortet
Sam Browder
  • Forum-Beiträge: 236

18.05.2011, 15:49:16 via Website

Mal eine ganz doofe frage (aber ich lerne ja noch:)):
welchen Befehl muss man statt
finish();
eingeben, damit das Programm komplett geschossen wird, und nicht nur auf die vorherige Seite springt?
Danke im Voraus!

— geändert am 18.05.2011, 15:50:01

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

18.05.2011, 16:14:19 via Website

Bitte den Android Activity Lifecycle beachten.

Es ist nicht vorgesehen, dass deine App (von dir) komplett geschlossen wird.

swordiApps Blog - Website

Benjamin RüdeMathias Lin

Antworten
Mathias Lin
  • Forum-Beiträge: 20

18.05.2011, 16:20:51 via Website

Yep, wie Markus schon sagt... Du kannst zwar schon alle Screens beenden (via finish), die App ganz killen (bzw. den Process) ist allerdings nicht vorgesehen.
Ansonsten zum Nachlesen hier noch weitere Links

http://stackoverflow.com/search?q=%5Bandroid%5D+finish+an+application
http://stackoverflow.com/questions/4758462/finish-all-activities
http://stackoverflow.com/questions/4732184/how-to-finish-an-android-application

Antworten
Sam Browder
  • Forum-Beiträge: 236

18.05.2011, 16:23:38 via Website

Ich habe folgendes Problem:
ich habe 1x main.xml und 1x main_a.xml.
Bei main.xml handelt es sich nur um das Programmlogo, und beim Start springt das Programm selber nach 4 Sekunden auf main_a.xml weiter, und hier wird das eigentliche Programm bedient. Wenn ich jetzt hier einen Menüpunkt "Schliessen" mir "finish();" erzeuge, springt das programm auf die Logo-Seite zurück. Ich muss diese aber irgendwie umgehen, so dass das Programm direkt zum Android zurückkehrt. Ich wäre Ihnem sehr Dankbar, wenn Sie mir sagen könnten, wie das geht.

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

18.05.2011, 16:43:43 via App

Hey,
wie wärs, wenn du nach dem Start der zweiten Activity die Erste schließt? Also startActivity() und direkt danach finish().
Lg Ansgar

Antworten
Sam Browder
  • Forum-Beiträge: 236

18.05.2011, 16:47:29 via Website

Super Idee!!! Danke!

Antworten
Sam Browder
  • Forum-Beiträge: 236

18.05.2011, 16:54:08 via Website

Funktioniert irgendwie nicht:
public boolean exitStart(final View View) {
startActivity(new Intent(this, MainActivity.class));
finish();
return false;

Antworten
Sam Browder
  • Forum-Beiträge: 236

19.05.2011, 10:43:16 via Website

Hat eventuell noch jemand eine Idee???

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

19.05.2011, 11:13:56 via Website

naja - was genau funktioniert nicht?

der code sieht brauchbar aus, aber wir können den kontext davon nicht sehen.

gibt es fehlermeldungen, was macht die app, was macht sie nicht?

swordiApps Blog - Website

Antworten
Sam Browder
  • Forum-Beiträge: 236

19.05.2011, 11:30:52 via App

Also es funktioniert insoweit nicht, dass das Programm einfach auf die vorherige Seite springt, und der Handler gestartet wird, also als ob man das Programm neu starten würde, statt es komplet zu verlassen.

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

19.05.2011, 12:49:26 via Website

aha

handler?

ich sehe hier im ganzen thread keinen handler. Hellseher sind hier, soweit ich weiß, keine unterwegs :D

swordiApps Blog - Website

Antworten
Sam Browder
  • Forum-Beiträge: 236

19.05.2011, 13:28:25 via Website

Eigentlich habe ich weiter oben den handler bereits erwähnt:
"Bei main.xml handelt es sich nur um das Programmlogo, und beim Start springt das Programm selber nach 4 Sekunden auf main_a.xml weiter"
Ich schildere jetzt das Problem noch ein Mal:
bei der Startseite (main.xml) handelt es sich nur um das Programmlogo, und diese Seite springt mittel des handlers nach 4 Sekunden auf die nächste Seite (main_b.xml) über, auf welcher das eigentliche Programm bedient wird. So, jetzt habe ich auf dieser Seite (main_b.xml) einen "Schliessen" - Button, und ich will erreichen, dass beim klicken auf diesen die vorherige Seite (mit dem Logo, main.xml) übersprungen wird, so dass man zum Android zurückkehrt.
Hier ist noch Mal die dazugehörige MainActivity der Logo-Seite:

public class MainActivity extends Activity {
private Handler _newViewHandler = new Handler();
private Runnable _newView = new Runnable() {
public void run() {
final Intent intent = new Intent(MainActivity.this, Main_bActivity.class);
startActivity(intent);
}
};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
_newViewHandler.postDelayed(_newView, 4000);
}
}

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

19.05.2011, 13:41:28 via Website

debug mal durch, ob du überhaupt in die runnable methode kommst

swordiApps Blog - Website

Antworten
Sam Browder
  • Forum-Beiträge: 236

19.05.2011, 13:55:25 via Website

[2011-05-19 13:49:48 - ***] Android Launch!
[2011-05-19 13:49:48 - ***] adb is running normally.
[2011-05-19 13:49:48 - ***] Performing info.samtek.***.MainActivity activity launch
[2011-05-19 13:49:48 - ***] Automatic Target Mode: Preferred AVD 'smartphone' is available on emulator 'emulator-5554'
[2011-05-19 13:49:48 - ***] Uploading t_a_pro.apk onto device 'emulator-5554'
[2011-05-19 13:49:52 - ***] Installing t_a_pro.apk...
[2011-05-19 13:50:03 - ***] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
[2011-05-19 13:50:03 - ***] Please check logcat output for more details.
[2011-05-19 13:50:03 - ***] Launch canceled!
[2011-05-19 13:50:29 - ***] Success!
[2011-05-19 13:50:29 - ***] Starting activity info.samtek.***.MainActivity on device emulator-5554
[2011-05-19 13:50:30 - ***] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
[2011-05-19 13:50:30 - ***] Please check logcat output for more details.
[2011-05-19 13:50:31 - ***] Launch canceled!
[2011-05-19 13:50:33 - ***] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=info.samtek.***/.MainActivity }
[2011-05-19 13:50:35 - ***] Attempting to connect debugger to 'info.samtek.***' on port 8607

Antworten
Sam Browder
  • Forum-Beiträge: 236

19.05.2011, 13:59:23 via Website

Noch Mal:


[2011-05-19 13:56:06 - ***] Android Launch!
[2011-05-19 13:56:06 - ***] adb is running normally.
[2011-05-19 13:56:06 - ***] Performing info.samtek.t_a_p_a.MainActivity activity launch
[2011-05-19 13:56:06 - ***] Automatic Target Mode: Preferred AVD 'smartphone' is available on emulator 'emulator-5554'
[2011-05-19 13:56:11 - ***] Application already deployed. No need to reinstall.
[2011-05-19 13:56:11 - ***] Starting activity info.samtek.t_a_p_a.MainActivity on device emulator-5554
[2011-05-19 13:56:15 - ***] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=info.samtek.t_a_p_a/.MainActivity }
[2011-05-19 13:56:18 - ***] Attempting to connect debugger to 'info.samtek.t_a_p_a' on port 8607

Also im Emulator funktioniert alles: die main.xml spring nach 4 Sekunden zu main_b.xml. Beim Schliessen der main_b.xml mit finish(); kehrt das Programm wieder zur main.xml zurück.

— geändert am 19.05.2011, 14:10:29

Antworten
Sam Browder
  • Forum-Beiträge: 236

19.05.2011, 16:36:12 via Website

Irgendwelche Ideen???

Antworten
Mathias Lin
  • Forum-Beiträge: 20

19.05.2011, 16:47:34 via Website

In dem Code ist doch gar kein finish(), wenn es nach dem Logo-Screen zur nachsten Activitiy geht?

Am besten mal ganze Klasse und xml posten.
(btw: Code Formatierungen am besten mit dem Code-Tag im Editor formatieren, ist einfacher lesbar. Oder langen Code in pastebin.com posten.)

Antworten
Sam Browder
  • Forum-Beiträge: 236

19.05.2011, 17:11:18 via Website

main.xml:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@drawable/globus_main_b"
android:padding="10dip">
<TextView android:text="@string/copyright" android:id="@+id/textView1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:textColor="#ff000000" android:textSize="8pt" android:layout_weight="1"></TextView>
<TableRow android:layout_height="wrap_content"
android:id="@+id/tableRow1"
android:layout_weight="0" android:layout_width="wrap_content" android:layout_gravity="center_horizontal">
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageButton1" android:src="@drawable/main_close_72" android:onClick="main_closeStart"></ImageButton>
</TableRow>
</LinearLayout>

MainActivity:

public class MainActivity extends Activity {

private Handler _newViewHandler = new Handler();
private Runnable _newView = new Runnable() {
public void run() {
final Intent intent = new Intent(MainActivity.this, Main_bActivity.class);
startActivity(intent);
}
};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
_newViewHandler.postDelayed(_newView, 4000);
}
public boolean main_closeStart(final View View) {
finish();
return false; /// Dieser Butten wird entfernt, wenn ich das Problem gelöst habe.
}
}

main_b.xml:

<?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:padding="10dip" android:orientation="vertical">
<TableRow android:id="@+id/tableRow1" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_gravity="center_horizontal">
<TextView android:text="Exit" android:id="@+id/textView1"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<ImageButton android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/imageButton1"
android:src="@drawable/power" android:onClick="exitStart"></ImageButton>
<TextView android:text=" " android:id="@+id/textView4"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<ImageButton android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/imageButton4"
android:src="@drawable/info" android:onClick="manualStart"></ImageButton>
<TextView android:text="Help" android:id="@+id/textView2"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</TableRow>
<TableRow android:id="@+id/tableRow4" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_gravity="center_horizontal">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/imageView1"
android:src="@drawable/globus_c"></ImageView>
</TableRow>
<TableLayout android:layout_width="match_parent"
android:id="@+id/tableLayout1" android:layout_height="wrap_content">
</TableLayout>
<TableRow android:id="@+id/tableRow2" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_gravity="center_horizontal">
<ImageButton android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/imageButton2"
android:src="@drawable/worldtime" android:onClick="timeStart"></ImageButton>
<TextView android:text=" " android:id="@+id/textView5"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<ImageButton android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/imageButton3" android:src="@drawable/wmo_logo" android:onClick="wmoStart"></ImageButton>
<TextView android:text=" " android:id="@+id/textView6"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<ImageButton android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/imageButton5"
android:src="@drawable/rb_seaux_d" android:onClick="warnungStart"></ImageButton>
<TextView android:text=" " android:id="@+id/textView3"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<ImageButton android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/imageButton6"
android:src="@drawable/flags"></ImageButton>
</TableRow>
<TableRow android:id="@+id/tableRow5"
android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center_horizontal">
<ImageButton android:id="@+id/imageButton7" android:layout_width="145dp" android:src="@drawable/preferences" android:layout_height="45dp"></ImageButton>
<ImageButton android:id="@+id/imageButton8" android:layout_width="145dp" android:src="@drawable/email" android:layout_height="45dp" android:onClick="mailStart"></ImageButton>
</TableRow>
<TextView android:text=" " android:id="@+id/textView7"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<TableRow android:id="@+id/tableRow3" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_gravity="center_horizontal">
</TableRow>
</LinearLayout>

Mayn_bActivity:


public class Main_bActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_b);
}
public void manualStart(final View View) {
startActivity(new Intent(this, User_manualActivity.class));
}
public void timeStart(final View View) {
startActivity(new Intent(this, WorldtimeActivity.class));
}
public void wmoStart(final View View) {
startActivity(new Intent(this, WmoActivity.class));
}
public void warnungStart(final View View) {
startActivity(new Intent(this, Warnung_auswahlActivity.class));
}
public boolean exitStart(final View View) {
finish();
return false;
}
public boolean mailStart(final View View) {
Intent emailIntent = new Intent(
android.content.Intent.ACTION_SEND);
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
new String[] { "***@******.info" });
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
"Anfrage");
emailIntent.setType("text/text");
startActivity(Intent.createChooser(emailIntent,
"send..."));
return true;
}
}

Ich hoffe auf irgendwelche Ideen!!!

— geändert am 19.05.2011, 17:16:42

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

19.05.2011, 17:30:55 via Website

Schau Dir doch einmal diese Doku an. Da geht es um den Task Stack in Android. Dort solltest Du u.U. die Antwort auf Deine Frage finden.

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

19.05.2011, 17:36:31 via Website

Und weil es einfach ist das zu verstehen wenn man den LifeCycle einer App versteht und das greifbar vor Augen hat.

Implementiere mal den kompletten LifeCycle so wie ich es hier beschrieben habe incl. aller Logausgaben. Dann siehst Du genau wann Deine App in welchem Teil des Lifecycles ist und weisst genau an welcher Stelle Du eingreifen kannst.

lg Voss

Antworten
Sam Browder
  • Forum-Beiträge: 236

19.05.2011, 17:37:13 via Website

Danke, werde es mir ansehen.

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

19.05.2011, 17:43:30 via Website

Beachte auch das zweite Posting dazu bzgl des LifeCycles :) Falls das durch den Seitenumbruch verloren gegangen sein sollte ...

lg Voss

Antworten
Mathias Lin
  • Forum-Beiträge: 20

19.05.2011, 17:46:34 via Website

Bitte Code vernuenftig formatieren. Niemand will unformatierten langen Quellcode lesen.
Ich habe das extra in meinem vorigen Posting erwaehnt ! Danke.

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

19.05.2011, 17:57:20 via Website

Wenn es darum geht Code zum Kopieren hier hineinzuposten ist die Methodik ohne die Quellcode Klammer besser Mathias. Ansonsten muss man relativ mühsam die Zeilen Nummern rauslöschen.

Geht es nur um das Lesen ist die Lösung mit dem Quellcode besser.

lg Voss

Antworten
Sam Browder
  • Forum-Beiträge: 236

19.05.2011, 18:04:35 via Website

Vielen Dank! Werde jetzt zuerst die Beispiele durcharbeiten.

Antworten
Mathias Lin
  • Forum-Beiträge: 20

19.05.2011, 18:06:30 via Website

Hi Joerg,

yep, das stimmt. Der Code hier ist ja aber nicht zum Kopieren, sondern fuer uns zum Lesen und ggf. um auf einen Fehler mit Zeilennummer hinzuweisen. Ich hatte zumindest nicht vor, hier etwas zu kopieren ;-)
Ansonsten gibt es ja noch pastebin.com, auf das man schnell verlinken kann (und beides bietet). Ich meine ja den langen Code-Posts (xml und ganze Java-Klasse), bei ~5 Zeilen ist es natuerlich egal.

Ok, war nur ein kleiner Hinweis -- ist hier ja ansonsten offtopic.

Beste Gruesse, M

Antworten