Jetzt registrieren » Login
« Login

Passwort vergessen?

ViewFlipper Problem

Um aktiv im Android Forum teilnehmen zu können, musst Du Dich bei AndroidPIT registriert haben.

User-Foto
Stefan Baumgartnerde

Rang: Schülersprecher

Beiträge: 66

Eintrittsdatum: 09.09.2010

ViewFlipper Problem
verfasst am 09.09.2010 08:19:08
Hallo bin neu hier und hab gleich ein Problem,

Kurzbeschreibung:

In meinem Programm gibt es 2 Screens. Auf dem ersten werden Datensätze via ListView dargestellt und wenn man auf einen dieser Listeneinträge klickt soll man zur 2. Activity springen inder man etwas mit diesen "Datensätzen" anstellen kann. Das Funktioniert soweit alles gut.

Jetzt wollte ich aber Programmieren das man von diesem 2. Screen mit dem Finger wieder zum 1. Screen zurücksliden kann (nicht umgekehrt).
Also genau wie bei dem Homescreen vom HTC. Wie stell ich das am besten an?

Ich hab mich im Internet ein bischen schlau gemacht und bin auf den ViewFlipper gestoßen. Da aber meine 2 Screens getrennt voneinander liegen hab ich versucht meinen ViewFlipper in eine extra xml datei zu schreiben, aber dann erhalte ich immer eine NullPointerException.

Ich schreib hier einfach mal meinen code von den 2. Screens und dem ViewFlipper

view_flipper.xml
1<?xml version="1.0" encoding="utf-8"?>
2
3<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
4 android:id="@+id/flipper"
5 android:layout_width="fill_parent"
6 android:layout_height="fill_parent">
7
8 <include android:id="@+id/first" layout="@layout/picoguard_anzeigen" />
9 <include android:id="@+id/second" layout="@layout/picoguards" />
10</ViewFlipper>

1. Screen
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 android:background="@drawable/picoguards"
7 android:id="@+id/picoguards"
8 >
9
10<LinearLayout
11 android:orientation="horizontal"
12 android:layout_width="wrap_content"
13 android:layout_height="wrap_content"
14 >
15
16 <TextView
17 android:layout_width="fill_parent"
18 android:layout_height="wrap_content"
19 android:layout_marginTop="20px"
20 android:layout_marginLeft="10px"
21 android:text="Übersicht"
22 android:textSize="40px"
23 android:textColor="@color/textfarbe"
24 />
25
26 <Button android:id="@+id/neuButton"
27 android:layout_width="60px"
28 android:layout_height="60px"
29 android:layout_marginTop="15px"
30 android:layout_marginLeft="15px"
31 android:background="@drawable/add"
32 android:onClick="onClickNeu"
33 />
34</LinearLayout>
35
36<ListView
37 android:id="@+id/android:list"
38 android:layout_width="wrap_content"
39 android:layout_height="wrap_content"
40 android:layout_marginTop="20px"
41 android:layout_marginLeft="10px"
42 android:layout_marginRight="10px"
43 android:layout_marginBottom="20px"
44 android:background="@layout/picoguards_shape"
45 />
46</LinearLayout>

2. Screen
1<?xml version="1.0" encoding="UTF-8"?>
2
3<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 android:id="@+id/picoguard_anzeigen" >
7
8<LinearLayout
9 android:orientation="vertical"
10 android:layout_width="fill_parent"
11 android:layout_height="fill_parent"
12 >
13
14<Button android:id="@+id/scharfButton"
15 android:layout_width="250px"
16 android:layout_height="75px"
17 android:layout_gravity="center"
18 android:layout_marginTop="50px"
19 android:background="@drawable/scharf"
20 android:onClick="onClickScharf"
21 />
22
23<Button android:id="@+id/unscharfButton"
24 android:layout_width="250px"
25 android:layout_height="75px"
26 android:layout_gravity="center"
27 android:layout_marginTop="50px"
28 android:background="@drawable/unscharf"
29 android:onClick="onClickUnscharf"
30 />
31
32<Button android:id="@+id/picoguardsButton"
33 android:layout_width="wrap_content"
34 android:layout_height="wrap_content"
35 android:layout_marginTop="50px"
36 android:layout_gravity="center"
37 android:text="zurück"
38 android:onClick="onClickPicoguards"
39 />
40
41</LinearLayout>
42</ScrollView>

In der Activity mach ich das

1ViewFlipper flipper = (ViewFlipper)findViewById(R.layout.view_flipper);

Und wenn ich jetzt auf das flipper objekt zugreifen will, wirft er immer eine NullPointerException.

Ich glaub das liegt an meiner eigenen ViewFlipper xml datei, aber ich weis nicht wies richtig gehört ^^

Brauche dringend hilfe

mfg
Stefan
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Markus Gude

Rang: Android Gottheit

Beiträge: 2.528

Eintrittsdatum: 05.06.2009

RE: ViewFlipper Problem
verfasst am 09.09.2010 09:05:16
mach mal R.id.flipper, dann wirds gehn

-----
swordiApps Blog - Website

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Stefan Baumgartnerde

Rang: Schülersprecher

Beiträge: 66

Eintrittsdatum: 09.09.2010

RE: ViewFlipper Problem
verfasst am 09.09.2010 09:18:31
danke für die schnelle antwort

aber bei

1flipper.showNext();

wirft er mir ne NullPointerException

Ich post mal meinen ganzen code von der Activity (auch wenn sicher 80% für das problem unrelevant sind ^^

1package picoguard.view;
2
3import android.app.Activity;
4import android.content.Intent;
5import android.os.Bundle;
6import android.telephony.SmsManager;
7import android.util.Log;
8import android.view.MotionEvent;
9import android.view.View;
10import android.view.View.OnClickListener;
11import android.view.View.OnTouchListener;
12import android.widget.Button;
13import android.widget.ScrollView;
14import android.widget.ViewFlipper;
15/**
16 * Diese Klasse erstellt die Bildschirmseite in der, der Benutzer
17 * seine Anlage "scharf" oder unscharf" schalten kann. Dies geschieht
18 * durch sms versand (Nachricht vom Benutzer festgelegt) an die
19 * angegebene Rufnummer der Anlage.
20 *
21 * @author stefanbaumgartner
22 * @version 1.0
23 */
24public class Picoguard_Anzeigen extends Activity implements OnTouchListener {
25 /*
26 * Variablen die mit den aus der vorherigen Activity übergebenen
27 * Daten befüllt werden um sie später zu nutzen.
28 */
29 private String rufnummer;
30 private String pinScharf;
31 private String pinUnscharf;
32
33 private Button scharfButton;
34 private Button unscharfButton;
35
36 private float downX;
37
38 private ViewFlipper flipper;
39
40 private ScrollView picoguardAnzeigen;
41
42 public void onCreate(Bundle savedInstanceState) {
43 super.onCreate(savedInstanceState);
44 setContentView(R.layout.picoguard_anzeigen);
45 /*
46 * Die aus dem vorherigen Bildschirm übergebenen Daten
47 * werden in lokale Variablen gespeichert um diese
48 * weiterhin nutzen zu können.
49 */
50 final Bundle extras = getIntent().getExtras();
51
52 rufnummer = extras.getString(Picoguards.RUFNUMMER);
53 pinScharf = extras.getString(Picoguards.PINSCHARF);
54 pinUnscharf = extras.getString(Picoguards.PINUNSCHARF);
55
56 scharfButton = (Button)findViewById(R.id.scharfButton);
57 scharfButton.setOnClickListener(scharfListener);
58
59 unscharfButton = (Button)findViewById(R.id.unscharfButton);
60 unscharfButton.setOnClickListener(unscharfListener);
61
62 final Button picoguardsButton = (Button)findViewById(R.id.picoguardsButton);
63 picoguardsButton.setOnClickListener(picoguardsListener);
64
65 flipper = (ViewFlipper)findViewById(R.id.flipper);
66 picoguardAnzeigen = (ScrollView)findViewById(R.id.picoguard_anzeigen);
67 picoguardAnzeigen.setOnTouchListener((OnTouchListener)this);
68 }
69 private OnClickListener scharfListener = new OnClickListener() {
70 public void onClick(View view) {
71 onClickScharf(view);
72 }
73 };
74 public void onClickScharf(final View view) {
75 //Bild wird verändert (Hover).
76 scharfButton.setBackgroundResource(R.drawable.scharf_hover);
77 /*
78 * Dieses Konstrukt ermöglicht das schreiben einer SMS
79 */
80 final SmsManager smsManager = SmsManager.getDefault();
81 smsManager.sendTextMessage(rufnummer, null,
82 pinScharf, null, null);
83 }
84 private OnClickListener unscharfListener = new OnClickListener() {
85 public void onClick(View view) {
86 onClickUnscharf(view);
87 }
88 };
89 public void onClickUnscharf(final View view) {
90 //Bild wird verändert (Hover).
91 unscharfButton.setBackgroundResource(R.drawable.unscharf_hover);
92 /*
93 * Dieses Konstrukt ermöglicht das schreiben einer SMS
94 */
95 final SmsManager smsManager = SmsManager.getDefault();
96 smsManager.sendTextMessage(rufnummer, null,
97 pinUnscharf, null, null);
98 }
99 private OnClickListener picoguardsListener = new OnClickListener() {
100 public void onClick(View view) {
101 onClickPicoguards(view);
102 }
103 };
104 public void onClickPicoguards(final View view) {
105 startActivity(new Intent(this, Picoguards.class));
106 }
107 /**
108 * Diese Methode steuert die Berührungen auf dem Touchpad
109 */
110 @Override
111 public boolean onTouch(View view, MotionEvent motionEvent) {
112 /*
113 * Wenn der Benutzer auf das Touchpad drückt, soll die
114 * aktuelle Position des Fingers in eine variable
115 * gespeichert werden.
116 */
117 if(motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
118 downX = motionEvent.getX();
119 }
120 /*
121 * Wenn der Benutzer das Touchpad wieder loslässt, wird
122 * die aktuelle position wieder in eine variable
123 * gespeichert.
124 */
125 else if(motionEvent.getAction() == MotionEvent.ACTION_UP) {
126
127 float currentX = motionEvent.getX();
128 /*
129 * Wenn der Benutzer den Finger 50px nach links
130 * verschoben hat, wird der Picoguards Bildschirm
131 * aufgerufen.
132 */
133 if(downX + 50 < currentX) {
134 //flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slidein));
135 //flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slideout));
136 flipper.showNext();
137 }
138 }
139 return true;
140 }
141
142 public void onPause() {
143 finish();
144 super.onPause();
145 }
146}
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Markus Gude

Rang: Android Gottheit

Beiträge: 2.528

Eintrittsdatum: 05.06.2009

RE: ViewFlipper Problem
verfasst am 09.09.2010 09:22:36
sorry durch soviel code kann ich mich nicht durcharbeiten ;)

von layout her sollte es mit R.id.flipper genommen werden, dann sollte der flipper nicht mehr null sein

-----
swordiApps Blog - Website

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Stefan Baumgartnerde

Rang: Schülersprecher

Beiträge: 66

Eintrittsdatum: 09.09.2010

RE: ViewFlipper Problem
verfasst am 09.09.2010 09:28:41
jo kein Problem

Ich denke das Problem liegt daran das meine Activity (die ich gepostet habe) ja das layout

picoguard_anzeigen implementiert. Und der ViewFlipper hat dieses Layout auch als item.

Vllt. gibts da irgendeinen konflikt?
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Marius O.de

Rang: Android Gottheit

Beiträge: 1.592

Eintrittsdatum: 02.05.2009

RE: ViewFlipper Problem
verfasst am 09.09.2010 14:10:18
du musst in der activity auf den flipper verweißen und nicht auf das "normale" layout ;)

auch wenn ich den code nur überfloge habe wirds daran liegen

PS: du könntest theoretisch auch alles in eine xml.datei packen...

nach diesem schema :

<viewflipper>
<linearlayout1>
....
</linearlayout1>
<linearlayout2>
....
</linearlayout2>
</viewflipper>

wenn das dir zu unübersichtlich ist, dann kannst du es natürlich auch so lassen

-----
Sammelthread|AndroidPIT-Regeln

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Stefan Baumgartnerde

Rang: Schülersprecher

Beiträge: 66

Eintrittsdatum: 09.09.2010

RE: ViewFlipper Problem
verfasst am 09.09.2010 14:53:39
erstmal danke für die tolle hilfe

@Marius

da das mit der verweis änderung nicht so geklappt hat (nullPointer)

hab ich einfach mal alles in eine xml datei gepackt (wie dus beschrieben hast)

Jetzt funktioniert der View Flipper auch, das Problem ist nur das im "geflippten" screen keine Buttons funktionieren.
Außerdem werden die Objekte in meiner ListView nichtmehr angezeigt.

jemand eine idee an was das liegt?
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Marius O.de

Rang: Android Gottheit

Beiträge: 1.592

Eintrittsdatum: 02.05.2009

RE: ViewFlipper Problem
verfasst am 09.09.2010 15:47:32
hay

ich find in deinem code nirgens eine zeile in welcher du die ListView an eine variable gebunden hast. Evtl liegt es daran und ich bin mir auch nicht sicher ob "android:list" überhaupt als id-name akzeptiert wird.

die buttons gehen warsch aus dem selben grund nicht, die werde ja auch nirgendwo angebunden oder?

PS:

in der onPause() methode, wird super.onPause() nie aufgerufen, da du davor die aktiviy beendest ;)

-----
Sammelthread|AndroidPIT-Regeln

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Stefan Baumgartnerde

Rang: Schülersprecher

Beiträge: 66

Eintrittsdatum: 09.09.2010

RE: ViewFlipper Problem
verfasst am 09.09.2010 16:00:21
Was meinst du mit "binden"?

1sowas wie ListView a = (ListView)findViewById(R.id.list);

?

Meine ListView und der Button funktioniert ja wenn ich die activity normal aufrufe. Nur wenn ich von dem
2. Screen auf den 1 zurückslide gehen diese funktionen nichtmehr.

Hab das gefühl das mein "ViewFlipper" zwar das Layout lädt, aber die Activity (mit den funktionen) nicht. ^^
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Marius O.de

Rang: Android Gottheit

Beiträge: 1.592

Eintrittsdatum: 02.05.2009

RE: ViewFlipper Problem
verfasst am 09.09.2010 16:05:12
achso...
aber das ist ja klar...
du bist nämlich immernoch in der selben activity... nur das layout hat gewechselt...
du musst den inhalt der 2. activtiy auch in die erste übertragen

-----
Sammelthread|AndroidPIT-Regeln

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Stefan Baumgartnerde

Rang: Schülersprecher

Beiträge: 66

Eintrittsdatum: 09.09.2010

RE: ViewFlipper Problem
verfasst am 09.09.2010 16:13:02
ok jetzt funktioniert es, danke ;)

aber das ist irgendwie auch net die richtige lösung wenn alles in der selben activity steht
Ist nämlich doppelter code.


gibt es da nicht eine elegantere lösung?
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Marius O.de

Rang: Android Gottheit

Beiträge: 1.592

Eintrittsdatum: 02.05.2009

RE: ViewFlipper Problem
verfasst am 09.09.2010 16:24:19
ist mir keine bekannt... ein activity flipper wäre nicht schlecht:P

ich habe ähnlich algorythmen allg. gschrieben und mir übergabe parameter mehrfach nutzbar gemacht

-----
Sammelthread|AndroidPIT-Regeln

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Stefan Baumgartnerde

Rang: Schülersprecher

Beiträge: 66

Eintrittsdatum: 09.09.2010

RE: ViewFlipper Problem
verfasst am 09.09.2010 16:31:28
jo das stimmt^^

aber zumindest funktioniert es jetzt :D

also vielen dank für deine Hilfe ;)
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)

AndroidPIT unterstützen

Gefällt Dir AndroidPIT? Wir freuen uns, wenn Du uns unterstützt. Wie das geht? Klicke einfach auf die unten stehenden Links.

Weiterempfehlen

Gefällt Dir AndroidPIT? Dann empfiehl uns bitte weiter!

Fragen / Hilfe

Du hast Fragen zu AndroidPIT oder willst noch mehr erfahren? Diese Links helfen Dir vielleicht weiter...

  Du liest gerade: ViewFlipper Problem - Android Forum - AndroidPIT. Alle Zeitangaben in UTC+01:00. Es ist jetzt 11:12 Uhr.