Settings Menu soll Activity aufrufen

  • Antworten:31
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 17:18:18 via Website

Hallo,

Ich bin dabei mich einbisschen mit APPS programmierung zu beschäftigen und habe sogar das erste "hello world" hintermir. Nun Eclipse erstellt ja standartmässig ein menu Namens "Setttings":

1@Override
2 public boolean onCreateOptionsMenu(Menu menu) {
3 // Inflate the menu; this adds items to the action bar if it is present.
4 getMenuInflater().inflate(R.menu.activity_main, menu);
5 return true;
6 }

Nun habe ich eine neue Grafische Oberfläche (Activity2) angelegt, wie mache ich das nun wenn man auf den Menu Settings klickt dass sich das die 2te Oberfläche öffnet.

Ich bin etwas am rumtesten bis mein Buch ankommt.

Danke im voraus

Antworten
Timo D.
  • Forum-Beiträge: 182

04.03.2013, 17:26:36 via Website

Du erzeugst ein Intent und startest dieses. Gibt die Code Beispiele im Internet. Musst natürlich einen onClicklistener setzen. Muss es wirklich eine neue Activity sein oder willst du was bei der best. ändern? Z.B. die Gui?

Sichern Sie Ihr Smartphone gegen Diebstahl und erhöhen Sie die Chance, es wiederzufinden. Jetzt neu: Guardian - Anti-Diebstahl Guardian - Anti-Diebstahl Pro https://play.google.com/store/apps/details?id=de.tapps.guardian.pro Guardian - Anti-Diebstahl Trial https://play.google.com/store/apps/details?id=de.tapps.guardian.free

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 17:57:19 via App

Hi danke euch, ich will nur eine neue Oberfläche öffnen nix ändern

Hat vielleixht jemand ein beispiel

Antworten
impjor
  • Forum-Beiträge: 1.793

04.03.2013, 18:06:02 via App

steht doch alles dort:
1@Override
2public boolean onOptionsItemSelected(MenuItem item) {
3 // Handle item selection
4switch (item.getItemId()) {
5 case R.id.new_game: newGame(); return true;
6 case R.id.help: showHelp();
7 return true;
8default: return super.onOptionsItemSelected(item);
9}
10}

Statt new Game bzw. showHelp
muss du
setContentView(deinLayout);
einsetzen und natürlich R.id.xxx anpassen.
Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 18:15:25 via App

Danke das kommt direkt unter den code im ersten post?

Kennt ihr ne Seite wo es beispiele zu downloaden gibt?

Danke

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 18:48:07 via Website

Hallo,

Ich habe jetzt mal getestet jedoch leider ohne erfolg hier meine Dateien:

Manifest
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.example.tglapp"
4 android:versionCode="1"
5 android:versionName="1.0" >
6
7 <uses-sdk
8 android:minSdkVersion="8"
9 android:targetSdkVersion="17" />
10
11 <application
12 android:allowBackup="true"
13 android:icon="@drawable/ic_launcher"
14 android:label="@string/app_name"
15 android:theme="@style/AppTheme" >
16 <activity
17 android:name="com.example.tglapp.MainActivity"
18 android:label="@string/app_name" >
19 <intent-filter>
20 <action android:name="android.intent.action.MAIN" />
21 <action android:name="android.intent.action.MAIN2" />
22
23 <category android:name="android.intent.category.LAUNCHER" />
24 </intent-filter>
25 </activity>
26 <activity
27 android:name="com.example.tglapp.MainActivity2"
28 android:label="@string/title_activity_main_activity2" >
29 </activity>
30 </application>
31
32</manifest>

MainActivity.java
1package com.example.tglapp;
2
3import android.os.Bundle;
4import android.app.Activity;
5import android.view.Menu;
6import android.view.MenuItem;
7
8public class MainActivity extends Activity {
9
10 @Override
11 protected void onCreate(Bundle savedInstanceState) {
12 super.onCreate(savedInstanceState);
13 setContentView(R.layout.activity_main);
14 }
15
16 @Override
17 public boolean onCreateOptionsMenu(Menu menu) {
18 // Inflate the menu; this adds items to the action bar if it is present.
19 getMenuInflater().inflate(R.menu.activity_main, menu);
20 return true;
21 }
22
23 @Override
24 public boolean onOptionsItemSelected(MenuItem item) {
25 // Handle item selection
26 switch (item.getItemId()) {
27 case R.menu.activity_main: setContentView(R.layout.activity_main2);
28 return true;
29 default: return super.onOptionsItemSelected(item);
30 }

31 }
32}

Wo ist da der Wurm drin? könnt ihr mir da vielleicht weiterhelefen, oder benötigt ihr noch eine Datei?

Ja ich hab mir ein Buch bestellt sollte im Laufe der Woche ankommen.

Danke im voraus, wenn jemand mir da weiterhelfen kann.

Antworten
impjor
  • Forum-Beiträge: 1.793

04.03.2013, 18:51:29 via App

R.activity_ main ist falsch, muss durch die id ersetzt werden, die der Menü- item hat. das ganze ist ja dazu da herauszufinden, WELCHER Menü Eintrag geklickt wurde.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 18:57:31 via Website

1@Override
2 public boolean onOptionsItemSelected(MenuItem item) {
3 // Handle item selection
4 switch (item.getItemId()) {
5 case R.id.menu_settings: setContentView(R.layout.activity_main2);
6 return true;
7 default: return super.onOptionsItemSelected(item);
8 }

Funktioniert noch immer nicht wie soll die ID da sein?

1<menu xmlns:android="http://schemas.android.com/apk/res/android" >
2
3 <item
4 android:id="@+id/menu_settings"
5 android:orderInCategory="100"
6 android:showAsAction="never"
7 android:title="@string/menu_settings"/>
8
9</menu>

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 19:11:12 via Website

Hallo,

Funktioniert :P

Danke dir, andere frage wie kann ich das jetzt bewerkstellen dass man beim back button wieder auf die anfangseite kommt ?

Antworten
impjor
  • Forum-Beiträge: 1.793

04.03.2013, 19:25:45 via App

Starte eine neue Activity statt ein neues Layout zu laden, dann macht Android das automatisch. Ist außerdem eine gute Übung :grin:

— geändert am 04.03.2013, 19:26:19

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 19:28:20 via Website

Danke dir und wie geht das ? :)

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 19:51:47 via Website

Haste nicht auf die schnelle ein codeschnipsel zum aufrufen hab gerade etwas gegooglet und getestet werde aber nicht richtig schlau.

Was kommt anstatt:
1setContentView(R.layout.activity_main2);

Zum aufrufen der activity

Antworten
impjor
  • Forum-Beiträge: 1.793

04.03.2013, 19:55:01 via App

Activity ist schon etwas aufwändiger. Aber sonst krachts bei der nächsten Activity die du programmierst. Der erste deutsche Beitrag ist doch super, hat sogar Bilder.

Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Timo D.
  • Forum-Beiträge: 182

04.03.2013, 19:55:56 via Website

Willst du eine Activity starten oder was?
Dann folgendes:
1Intent myIntent = new Intent(aktuelleActivity.this, neueActivity.class);
2startActivity(myIntent);

Sichern Sie Ihr Smartphone gegen Diebstahl und erhöhen Sie die Chance, es wiederzufinden. Jetzt neu: Guardian - Anti-Diebstahl Guardian - Anti-Diebstahl Pro https://play.google.com/store/apps/details?id=de.tapps.guardian.pro Guardian - Anti-Diebstahl Trial https://play.google.com/store/apps/details?id=de.tapps.guardian.free

Antworten
impjor
  • Forum-Beiträge: 1.793

04.03.2013, 19:57:46 via App

klappt nicht: Androidmanifest fehlt, klasse fehlt...
Nochmal der erste Beitrag ist ein komplettes deutsches Tutorial.

Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 19:58:19 via Website

Hi,

Genau damit bin ich momentan dabei das zu machen jedoch weiss ich nicht wie ich das hier einbauen soll:

1@Override
2 public boolean onOptionsItemSelected(MenuItem item) {
3 // Handle item selection
4 switch (item.getItemId()) {
5 case R.id.menu_settings: setContentView(R.layout.activity_main2);
6 return true;
7 default: return super.onOptionsItemSelected(item);
8 }

anstatt diesem befehl:
1setContentView(R.layout.activity_main2);

Meine Activitys heissen MainActivity.java und MainActivity2.java

Danke nochmals an alle werde mich da mehr reinstürzen

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 20:02:48 via Website

Jap ist in den Manifest eingetragen jedoch weis ich nicht wie ich das einbauen soll siehe post über deinem.

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 20:09:50 via Website

1@Override
2 public boolean onOptionsItemSelected(MenuItem item) {
3 // Handle item selection
4
5
6 switch (item.getItemId()) {
7 case R.id.menu_settings:
8 Intent myIntent = new Intent(MainActivity.this, MainActivity2.class);
9 startActivity(myIntent);
10
11 return true;
12 default: return super.onOptionsItemSelected(item);
13 }

Danke, ja ok aber funktioniert irgendwie nicht

Antworten
Timo D.
  • Forum-Beiträge: 182

04.03.2013, 20:19:49 via Website

Fehlermeldung?
Nebenbei: Wieso nicht einfach ein if-Statement?
Bitte auch noch etwas selbst machen. Denn solche Informationen sind einfach unnütz. Man sollte wenigstens anmerken, ob es syntaktische oder inhaltliche Fehler sind, denn funktioniert irgendwie nicht ist wenig produktiv.

— geändert am 04.03.2013, 20:20:10

Sichern Sie Ihr Smartphone gegen Diebstahl und erhöhen Sie die Chance, es wiederzufinden. Jetzt neu: Guardian - Anti-Diebstahl Guardian - Anti-Diebstahl Pro https://play.google.com/store/apps/details?id=de.tapps.guardian.pro Guardian - Anti-Diebstahl Trial https://play.google.com/store/apps/details?id=de.tapps.guardian.free

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 20:28:12 via Website

Fehlermeldung gibt es zu genüge, ist der code wie ich ihn eingebaut habe überhaupt richtig ich denk eher nicht.

Danke nochmals leute. Wenn jemand mir da weiterhelfen könnt gebe ich Ruhe für heute :) lol

DANKE nochmals

Antworten
impjor
  • Forum-Beiträge: 1.793

04.03.2013, 21:10:20 via App

Du musst den Fehler genauer beschreiben. Meckert Eclipse (Syntaxfehler)? Oder stürzt die App zur Laufzeit ab, dann immer im logcat nach Fehlern suchen und ggf. posten. Falls du nicht weiß was das Logcat ist: Google

Gruß

edit: hab noch was vergessen. wenn du neue Klassen von Android verwendest, also hier intent, dann immer Strg+O drücken, damit eclipse / Java die findet.

— geändert am 04.03.2013, 21:13:03

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Omex LU
  • Forum-Beiträge: 72

04.03.2013, 21:20:07 via App

Hallo,

Danke werde morgen nochmals probieren und ausführlich berichten was dann nicht klappt, der code wie oben sollte aber +/- passen oder?

Antworten
Omex LU
  • Forum-Beiträge: 72

05.03.2013, 15:24:15 via App

Hallo Danke für eure Hilfe. Hat nun alles geklappt.

Ich habe jedoch noch 2 fragen:
- wie erzeuge ich eine infobox die aufpoppt und den hintergrund abdimmt, wie heisst das dass ich googlen kann?
- wie erstelle ich menu oben in der activity?

Danke im voraus

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.03.2013, 15:50:17 via App

Google mal nach Android Action Bar.
Das ist so etwas.

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

Antworten