Brauche Hilfe beim Programmieren! Programm ganz schliessen.

  • Antworten:25
  • OffenNicht stickyBentwortet
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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

Empfohlene Artikel