Stefan Baumgartner
Rang: Schülersprecher
Beiträge: 66
Eintrittsdatum: 09.09.2010
Modell: HTC Desire
Firmware:
Mod:
Kernel:
Build:
Provider:
|
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
|
Markus Gu
Rang: Android Gottheit
Beiträge: 2.528
Eintrittsdatum: 05.06.2009
Modell: Samsung Galaxy S (I9000)
Firmware: 2.2.1
Mod: -
Kernel: 2.6.29root@SE-S603 #2
Build: JPU
Provider: A1
|
RE: ViewFlipper Problem
verfasst am 09.09.2010 09:05:16
mach mal R.id.flipper, dann wirds gehn
-----
swordiApps Blog - Website
|
Stefan Baumgartner
Rang: Schülersprecher
Beiträge: 66
Eintrittsdatum: 09.09.2010
Modell: HTC Desire
Firmware:
Mod:
Kernel:
Build:
Provider:
|
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}
|
Markus Gu
Rang: Android Gottheit
Beiträge: 2.528
Eintrittsdatum: 05.06.2009
Modell: Samsung Galaxy S (I9000)
Firmware: 2.2.1
Mod: -
Kernel: 2.6.29root@SE-S603 #2
Build: JPU
Provider: A1
|
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
|
Stefan Baumgartner
Rang: Schülersprecher
Beiträge: 66
Eintrittsdatum: 09.09.2010
Modell: HTC Desire
Firmware:
Mod:
Kernel:
Build:
Provider:
|
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?
|
Marius O.
Rang: Android Gottheit
Beiträge: 1.592
Eintrittsdatum: 02.05.2009
Modell: HTC Wildfire
Firmware: 2.1
Mod: -
Kernel: -
Build: -
Provider: Vodafone
|
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
|
Stefan Baumgartner
Rang: Schülersprecher
Beiträge: 66
Eintrittsdatum: 09.09.2010
Modell: HTC Desire
Firmware:
Mod:
Kernel:
Build:
Provider:
|
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?
|
Marius O.
Rang: Android Gottheit
Beiträge: 1.592
Eintrittsdatum: 02.05.2009
Modell: HTC Wildfire
Firmware: 2.1
Mod: -
Kernel: -
Build: -
Provider: Vodafone
|
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
|
Stefan Baumgartner
Rang: Schülersprecher
Beiträge: 66
Eintrittsdatum: 09.09.2010
Modell: HTC Desire
Firmware:
Mod:
Kernel:
Build:
Provider:
|
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. ^^
|
Marius O.
Rang: Android Gottheit
Beiträge: 1.592
Eintrittsdatum: 02.05.2009
Modell: HTC Wildfire
Firmware: 2.1
Mod: -
Kernel: -
Build: -
Provider: Vodafone
|
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
|
Stefan Baumgartner
Rang: Schülersprecher
Beiträge: 66
Eintrittsdatum: 09.09.2010
Modell: HTC Desire
Firmware:
Mod:
Kernel:
Build:
Provider:
|
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?
|
Marius O.
Rang: Android Gottheit
Beiträge: 1.592
Eintrittsdatum: 02.05.2009
Modell: HTC Wildfire
Firmware: 2.1
Mod: -
Kernel: -
Build: -
Provider: Vodafone
|
RE: ViewFlipper Problem
verfasst am 09.09.2010 16:24:19
ist mir keine bekannt... ein activity flipper wäre nicht schlecht  ich habe ähnlich algorythmen allg. gschrieben und mir übergabe parameter mehrfach nutzbar gemacht
-----
Sammelthread|AndroidPIT-Regeln
|
Stefan Baumgartner
Rang: Schülersprecher
Beiträge: 66
Eintrittsdatum: 09.09.2010
Modell: HTC Desire
Firmware:
Mod:
Kernel:
Build:
Provider:
|
RE: ViewFlipper Problem
verfasst am 09.09.2010 16:31:28
jo das stimmt^^ aber zumindest funktioniert es jetzt  also vielen dank für deine Hilfe ;)
|