onClick()x2

  • Antworten:68
Tom Com
  • Forum-Beiträge: 203

14.12.2013, 14:24:59 via App

Hallo
Wie kann man eigentlich zwei onClick Methoen in einer Klasse machen?
habe noch recht wenig erfahrung....
Danke

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

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

14.12.2013, 14:43:27 via Website

Pro button einen OnClick Listener ausetzen

1Button btn = (Button)findViewById(R.id.deinBTN);
2btn.setOnClickListener(new OnClickListener() {
3
4@Override
5public void onClick(View v)
6{
7//DoYour things
8
9}
10
11});
12
13Button btn1 = (Button)findViewById(R.id.deinBTN1);
14btn1.setOnClickListener(new OnClickListener() {
15
16@Override
17public void onClick(View v)
18{
19//DoYour things
20
21}
22
23});

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

Antworten
impjor
  • Forum-Beiträge: 1.793

14.12.2013, 15:19:56 via App

Besser *eine* onClick-Methode für alle Buttons und dann darin unterscheiden, welcher Button gedrückt wurde.
switch (v.getId())
case R.id.button1:
usw.

LG

Liebe Grüße impjor.

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

Antworten
Tom Com
  • Forum-Beiträge: 203

14.12.2013, 15:22:54 via App

Kannst du mir vielleicht eine beispiel onclick schicken.
Danke

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Tom Com
  • Forum-Beiträge: 203

14.12.2013, 15:46:44 via App

Ja sorry, aber danke!

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

14.12.2013, 16:02:07 via Website

Besser *eine* onClick-Methode für alle Buttons

Begründung?
Weil weniger Objekte angefordert werden?

Antworten
impjor
  • Forum-Beiträge: 1.793

14.12.2013, 16:16:43 via App

Einerseits das, andererseits finde ich es übersichtlicher, alle Aufrufe an einer Position zu haben, sofern sie sich ähneln. (Z.b. verschiedene Activitys aufrufen.) Oftmals schreiben Anfänger einen Listener in der onCreate, dann wieder etwas Code, dann der nächste Listener usw. Am Ende muss man den halben Quellcode durchlesen, um den richtigen zu finden.
Zumal es auch die Länge des Quellcodes reduziert.
LG

— geändert am 14.12.2013, 16:17:21

Liebe Grüße impjor.

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

Antworten
JOnas S
  • Forum-Beiträge: 2.256

14.12.2013, 16:58:30 via App

Du meinst bestimmt mit this also
1public void onCreate(){
2Button btn1 = (Button)findViewById(R.id.button1);
3btn1.setOnClickListener(this);
4Button btn2 = (Button)findViewById(R.id.button2);
5btn2.setOnClickListener(this);
6}
7
8public void onClick(View v){
9switch (v.getId())
10case R.id.button1:
11
12break;
13case R.id.button2:
14
15break;
16}
du musst nur noch bei this den onclicklisterner implementieren
LG

— geändert am 14.12.2013, 17:00:07

gruß Jonas ||Galaxy S with cm10.1 4.2.1|| gegen überlange Zitate

Antworten
Tom Com
  • Forum-Beiträge: 203

14.12.2013, 17:26:54 via App

Und was wenn der eine onClickListener ein Objekt und der zweite ein Button ist?

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Tom Com
  • Forum-Beiträge: 203

14.12.2013, 18:49:43 via App

Tom Com
Und was wenn der eine onClickListener ein Objekt und der zweite ein Button ist?
Bitte ich brauche Hilfe

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
SvenDD
  • Forum-Beiträge: 272

14.12.2013, 18:51:59 via Website

Ausprobieren...das ist der Sinn der Softwareentwicklung.

Antworten
Tom Com
  • Forum-Beiträge: 203

14.12.2013, 18:54:50 via App

Ich habs ja ptobiert aber es geht eben nicht

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
SvenDD
  • Forum-Beiträge: 272

14.12.2013, 19:54:03 via Website

Solange das Objekt einen ClickListener unterstützt, sollte es gehen.

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

14.12.2013, 20:24:29 via App

Poste code oder beschreibe dein Problem genauer.
ohne irgendwelche anhaltspunkte kann dir niemand helfen

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

Antworten
Tom Com
  • Forum-Beiträge: 203

15.12.2013, 07:51:19 via Website

Das Problem hab ich eh gelöst wenn ich aber das Spiel starte und auf Start drücke komm ich nicht zur GameActivity sondern die App bricht ab. Im LogCat steht NullPointerExpection die GameActivity hab ich im Manifest angemeldet.
was kann ich tun?

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

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

15.12.2013, 08:23:06 via App

Ja und was kann man da machen..
Natürlich den Code überprüpen und aus LogCat lesen wo die Nullpointerexception auftritt.

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

Antworten
Tom Com
  • Forum-Beiträge: 203

15.12.2013, 09:53:41 via Website

Die NullPointerExpection ist jetzt weg dafür steht das:
12-15 09:49:33.820: E/AndroidRuntime(9429): FATAL EXCEPTION: main
12-15 09:49:33.820: E/AndroidRuntime(9429): java.lang.RuntimeException: Unable to start activity ComponentInfo{at.tomcom.strangefly/at.tomcom.strangefly.GameActivity}: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.FrameLayout
12-15 09:49:33.820: E/AndroidRuntime(9429): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2245)
12-15 09:49:33.820: E/AndroidRuntime(9429): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295)
12-15 09:49:33.820: E/AndroidRuntime(9429): at android.app.ActivityThread.access$700(ActivityThread.java:150)
12-15 09:49:33.820: E/AndroidRuntime(9429): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
12-15 09:49:33.820: E/AndroidRuntime(9429): at android.os.Handler.dispatchMessage(Handler.java:99)
12-15 09:49:33.820: E/AndroidRuntime(9429): at android.os.Looper.loop(Looper.java:175)
12-15 09:49:33.820: E/AndroidRuntime(9429): at android.app.ActivityThread.main(ActivityThread.java:5279)
12-15 09:49:33.820: E/AndroidRuntime(9429): at java.lang.reflect.Method.invokeNative(Native Method)
12-15 09:49:33.820: E/AndroidRuntime(9429): at java.lang.reflect.Method.invoke(Method.java:511)
12-15 09:49:33.820: E/AndroidRuntime(9429): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
12-15 09:49:33.820: E/AndroidRuntime(9429): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
12-15 09:49:33.820: E/AndroidRuntime(9429): at dalvik.system.NativeStart.main(Native Method)
12-15 09:49:33.820: E/AndroidRuntime(9429): Caused by: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.FrameLayout
12-15 09:49:33.820: E/AndroidRuntime(9429): at at.tomcom.strangefly.GameActivity.onCreate(GameActivity.java:43)
12-15 09:49:33.820: E/AndroidRuntime(9429): at android.app.Activity.performCreate(Activity.java:5283)
12-15 09:49:33.820: E/AndroidRuntime(9429): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
12-15 09:49:33.820: E/AndroidRuntime(9429): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
12-15 09:49:33.820: E/AndroidRuntime(9429): ... 11 more
Ich bin kein guter LogCat Leser. Was bedeutet das? Habe auch den Layout Code der GameActivity:
1<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:background="@drawable/hintergrund"
6 android:paddingBottom="@dimen/activity_vertical_margin"
7 android:paddingLeft="@dimen/activity_horizontal_margin"
8 android:paddingRight="@dimen/activity_horizontal_margin"
9 android:paddingTop="@dimen/activity_vertical_margin"
10 tools:context=".StartActivity" >
11
12 <FrameLayout
13 android:id="@+id/frameLayout1"
14 android:layout_width="wrap_content"
15 android:layout_height="wrap_content"
16 android:layout_alignParentLeft="true"
17 android:layout_alignParentRight="true"
18 android:layout_alignParentTop="true" >
19
20 <TextView
21 android:id="@+id/points"
22 android:layout_width="wrap_content"
23 android:layout_height="wrap_content"
24 android:text="Large Text"
25 android:textAppearance="?android:attr/textAppearanceLarge"
26 android:textColor="@color/dunkelblau"
27 android:textStyle="bold" />
28
29 <TextView
30 android:id="@+id/round"
31 android:layout_width="wrap_content"
32 android:layout_height="wrap_content"
33 android:layout_gravity="right"
34 android:text="Large Text"
35 android:textAppearance="?android:attr/textAppearanceLarge"
36 android:textColor="@color/dunkelrot"
37 android:textStyle="bold" />
38
39 <Button
40 android:id="@+id/Pause"
41 android:layout_width="wrap_content"
42 android:layout_height="wrap_content"
43 android:layout_gravity="center"
44 android:onClick="@string/p"
45 android:text="Pause" />
46
47 </FrameLayout>
48
49 <LinearLayout
50 android:id="@+id/linearLayout1"
51 android:layout_width="wrap_content"
52 android:layout_height="wrap_content"
53 android:layout_alignLeft="@+id/frameLayout1"
54 android:layout_alignParentBottom="true"
55 android:layout_alignRight="@+id/frameLayout1"
56 android:orientation="vertical" >
57
58 <FrameLayout
59 android:layout_width="match_parent"
60 android:layout_height="wrap_content"
61 android:layout_weight="2.23" >
62
63 <FrameLayout
64 android:id="@+id/bar_hits"
65 android:layout_width="50dp"
66 android:layout_height="5dp"
67 android:layout_gravity="center_vertical"
68 android:background="@color/dunkelblau" >
69
70 </FrameLayout>
71
72 <TextView
73 android:id="@+id/hits"
74 android:layout_width="wrap_content"
75 android:layout_height="wrap_content"
76 android:layout_gravity="right"
77 android:layout_weight="2.23"
78 android:text="TextView"
79 android:textColor="@color/dunkelblau" />
80
81 </FrameLayout>
82
83 <FrameLayout
84 android:layout_width="match_parent"
85 android:layout_height="wrap_content"
86 android:layout_weight="2.23" >
87
88 <FrameLayout
89 android:id="@+id/bar_time"
90 android:layout_width="50dp"
91 android:layout_height="5dp"
92 android:layout_gravity="center_vertical"
93 android:background="@color/dunkelrot" >
94
95 </FrameLayout>
96
97 <TextView
98 android:id="@+id/time"
99 android:layout_width="wrap_content"
100 android:layout_height="wrap_content"
101 android:layout_gravity="right"
102 android:text="TextView"
103 android:textColor="@color/dunkelrot" />
104
105 </FrameLayout>
106
107 </LinearLayout>
108
109 <FrameLayout
110 android:id="@+id/spielbereich"
111 android:layout_width="match_parent"
112 android:layout_height="match_parent"
113 android:layout_below="@+id/frameLayout1"
114 android:layout_marginLeft="10dp" >
115
116 </FrameLayout>
117</RelativeLayout>

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

15.12.2013, 10:19:30 via App

Tom Com
java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.FrameLayout
12-15 09:49:33.820: E/AndroidRuntime(9429): at at.tomcom.strangefly.GameActivity.onCreate(GameActivity.java:43)
Steht doch alles wichtige in deinem LogCat drin! Schau dir die entsprechende Zeile an! Code von einem Layout wird in 99,9% der Fälle nicht benötigt. Wichtig ist der Code in Java.

LG

Liebe Grüße impjor.

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

Antworten
Tom Com
  • Forum-Beiträge: 203

15.12.2013, 10:57:53 via Website

Die
1ImageView flyi = new ImageView(this);
steht in eineFlyanzeigen. Wie kann man das aber auch für die onClick() verwenden?
Hier der Code
1package at.tomcom.strangefly;
2
3import java.util.Date;
4import java.util.Random;
5
6import android.app.Activity;
7import android.content.Intent;
8import android.media.MediaPlayer;
9import android.os.Bundle;
10import android.os.Handler;
11import android.view.Gravity;
12import android.view.View;
13import android.view.View.OnClickListener;
14import android.view.ViewGroup;
15import android.view.ViewGroup.LayoutParams;
16import android.widget.Button;
17import android.widget.FrameLayout;
18import android.widget.ImageView;
19import android.widget.TextView;
20
21public class GameActivity extends Activity implements Runnable{
22 private static final int ZEITSCHEIBEN = 600;
23 private static final int INTERVALL = 100;
24 private static final long HOECHSTALTER_MS = 2000;
25 private float massstab ;
26 private Random zufallsgenerator = new Random();
27 private int runde;
28 private int punkte;
29 private ViewGroup spielbereich;
30 private int gefangeneFly;
31 private int zeit;
32 private int fly;
33 private Handler handler = new Handler();
34 private static final String HELFER = "HELFER";
35 private MediaPlayer mp;
36
37
38
39 @Override
40 public void onCreate(Bundle savedInstanceState) {
41 super.onCreate(savedInstanceState);
42 setContentView(R.layout.activity_game);
43 massstab = getResources().getDisplayMetrics().density;
44 spielbereich = (FrameLayout) findViewById(R.id.spielbereich);
45 spielStarten();
46 mp = MediaPlayer.create(this,R.raw.summen);
47
48
49
50 }
51
52
53 private void spielStarten() {
54 runde = 0;
55 punkte = 0;
56 starteRunde();
57 }
58 private void starteRunde(){
59 runde = runde +1;
60 fly = runde * 20;
61 gefangeneFly = 0;
62 zeit = ZEITSCHEIBEN;
63 bildschirmAktualisieren();
64 handler.postDelayed(this,INTERVALL);
65 }
66
67 private boolean pruefeRundenende(){
68 if (zeit == 0){
69 punkte += 1000;
70 starteRunde();
71 return true;
72 }
73 return false;
74 }
75
76 private boolean pruefeSpielende(){
77 if( zeit == 0 && gefangeneFly < fly){
78 gameOver();
79 return true;
80 }
81 return false;
82 }
83 private void gameOver(){
84 startActivity(new Intent(this, GameOver.class));
85 finish();
86 }
87 private void zeitHerunterzaehlen(){
88 zeit = zeit -1;
89 float zufallszahl = zufallsgenerator.nextFloat();
90 double wahrscheinlichkeit = fly * 1.5/ZEITSCHEIBEN;
91 if ( wahrscheinlichkeit > 1 ) {
92 eineFlyAnzeigen();
93 if ( zufallszahl < wahrscheinlichkeit - 1) {
94 eineFlyAnzeigen();
95 }
96 } else {
97 if ( zufallszahl < wahrscheinlichkeit) {
98 eineFlyAnzeigen();
99 }
100
101 }
102 flyVerschwinden();
103 bildschirmAktualisieren();
104 if(!pruefeSpielende()) {
105 if(!pruefeRundenende()){
106 handler.postDelayed(this, INTERVALL);
107 }
108
109 }
110
111 }
112 private void bildschirmAktualisieren(){
113 TextView tvPunkte = (TextView)findViewById(R.id.points);
114 tvPunkte.setText(Integer.toString(punkte));
115 TextView tvRunde = (TextView)findViewById(R.id.round);
116 tvRunde.setText(Integer.toString(runde));
117 TextView tvTreffer = (TextView)findViewById(R.id.hits);
118 tvTreffer.setText(Integer.toString(gefangeneFly));
119 TextView tvZeit = (TextView)findViewById(R.id.time);
120 tvZeit.setText(Integer.toString(zeit));
121 FrameLayout flTreffer = (FrameLayout)findViewById(R.id.bar_hits);
122 LayoutParams lpTreffer = flTreffer.getLayoutParams();
123 lpTreffer.width = Math.round( massstab * 300 *
124 Math.min( gefangeneFly,fly) / fly);
125 FrameLayout flZeit = (FrameLayout)findViewById(R.id.bar_time);
126 LayoutParams lpZeit = flZeit.getLayoutParams();
127 lpZeit.width = Math.round( massstab * zeit * 300 / ZEITSCHEIBEN);
128
129
130
131 }
132
133
134 private void eineFlyAnzeigen(){
135 ImageView flyi = new ImageView(this);
136 flyi.setImageResource(R.drawable.ic_launcher);
137 flyi.setOnClickListener(new OnClickListener(){
138 @Override
139 public void onClick(View v){
140
141 if(flyi.getTag(R.id.tier) == HELFER) {
142 punkte -= 1000;
143 } else {
144 gefangeneFly++;
145 punkte +=10;
146 bildschirmAktualisieren();
147 spielbereich.removeView(flyi);
148 mp.pause();
149 }
150 }
151 });
152
153 int breite = spielbereich.getWidth();
154 int hoehe = spielbereich.getHeight();
155
156
157 flyi.setTag(R.id.geburtsdatum, new Date());
158 int fly_breite = (int)Math.round(massstab*50);
159 int fly_hoehe = (int)Math.round(massstab*50);
160 int links = zufallsgenerator.nextInt(breite-fly_breite);
161 int oben = zufallsgenerator.nextInt(hoehe-fly_hoehe);
162
163 FrameLayout.LayoutParams params =
164 new FrameLayout.LayoutParams(fly_breite,fly_hoehe);
165 params.leftMargin = links;
166 params.topMargin = oben;
167 params.gravity = Gravity.TOP + Gravity.LEFT;
168 if(zufallsgenerator.nextFloat() < 0.05) {
169 flyi.setImageResource(R.drawable.helfer);
170 flyi.setTag(R.id.tier,HELFER);
171 } else {
172 flyi.setImageResource(R.drawable.ic_launcher);
173 }
174 spielbereich.addView(flyi,params);
175 mp.seekTo(0);
176 mp.start();
177
178 }
179 private void flyVerschwinden() {
180 int nummer = 0;
181 while(nummer < spielbereich.getChildCount() ) {
182 ImageView flyi = (ImageView) spielbereich.getChildAt(nummer);
183 Date geburtsdatum = (Date) flyi.getTag(R.id.geburtsdatum);
184 geburtsdatum.getTime();
185 long alter = (new Date()).getTime() - geburtsdatum.getTime();
186 if(alter > HOECHSTALTER_MS ) {
187 spielbereich.removeView(flyi);
188 mp.pause();
189 }else{
190 nummer++;
191
192 }
193 }
194
195
196
197
198
199
200
201
202
203 Button pause = (Button)findViewById(R.id.Pause);
204 pause.setOnClickListener(new OnClickListener(){
205 @Override
206 public void onClick(View v)
207 {
208
209
210 onPause();
211 startActivity();
212 };
213 });
214 }
215
216
217
218
219 @Override
220 public void run(){
221 zeitHerunterzaehlen();
222 }
223 public void startActivity(){
224 startActivity(new Intent(this,GameActivity.class));
225 }
226
227
228
229 @Override
230 public void onDestroy() {
231 mp.release();
232 super.onDestroy();
233 }
234
235
236
237 }

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

15.12.2013, 11:41:27 via Website

Tom Com, bitte beschreibe genau, was du willst! Besteht der Fehler immer noch, dass die App abschmirt? Dann behebe diesen doch zuerst, bevor du dich weiteren Problemen widmest.

Die
1ImageView flyi = new ImageView(this);
steht in eineFlyanzeigen. Wie kann man das aber auch für die onClick() verwenden?
Warum willst du das tun? Weißt du überhaupt, was diese Zeile tut? Wahrscheinlich nicht. Sie erzeugt jediglich ein neues Object (vom Typ ImageView) im RAM des Handys. Warum willst du das in der onClick tun? Beschreibe ersteinmal dein Ziel.

Zudem ist es sehr unschön, deine Activity einfach neu zu starten, nur um das Spiel neuzustarten. FALSCH ist es aber auf jeden Fall, onPause() selber aufzurufen. Das macht das Android-OS von alleine und du solltest da nicht selber rumfuschen!!!

LG

Liebe Grüße impjor.

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

Antworten
Tom Com
  • Forum-Beiträge: 203

15.12.2013, 13:06:32 via Website

Eigentlich wollte ich, dass die Fly verschwinden sobald man auf sie drückt = onClick()
Zu der anderen Frage... Ich wollte wenn man auf den Pausebutton drückt, dass man in die pausenactivity wechselt und dann die Game pausiert (onPause()).
Die Activity startet stürzt bald aber wieder ab.

— geändert am 15.12.2013, 13:10:30

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

15.12.2013, 14:02:19 via App

ok, alles der Reihe nach:
Du willst, dass die "fly" verschwindet, wenn man sie drückt. Das ImageView soll also verschwinden. Dann setzte einfach bei jedem fly-ImageView den OnClickListener, in dem die aktuelle, berührte ImageView entfernt wird. Diese berührte ImageView ist der Parameter (View v) von der onClick()-Methode.
Mach das als erstes und kümmere dich dann um den Rest.

LG

Liebe Grüße impjor.

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

Antworten
Fabian Simon
  • Forum-Beiträge: 359

16.12.2013, 15:02:16 via Website

Hallo,
mir kommt es bei so fragen immer so vor, als würde nicht verstanden werden was ein Listener ist bzw. was dieser macht.

Dehalb:
Ein Listener ist allererst einmal ein Interface. (Das ist auch der Grund warum man kein Objekt eines Listeners erstellen kann)
Eine Klasse biete anhand eines Listener die Möglichkeit, diesem Informationen über das Interface zukommen zulassen.
Das beduetet:
Erster Schritt : Das Interface implementieren und ausprogrammieren.

1public class MeinClickListener implements OnClickListener{
2public void onClick(View v){
3....
4}
5
6}


Somit kann man dem View auch sagen welecher OnClickListener ausgeführt werden soll.
1view.setOnClickListener(new MeinClickListener());

Jetzt wird bei einem BTN Klick das ausgelöst, was in OnClick definiert ist.

@Tom Com :
Du solltest dir folgwende Fragen stellen.
Hast du Erfahrung mit OOP, Java, Datenstrukturen, Programm Strukturierung etc.
Wenn nicht wäre es angebracht sich diese Intensive anzueigenen bevor man an solch ein Projekt geht.
Gerade OOP und das Verständnis der Erbvorgäng hilft dir viel weiter um das ganze zu verstehen.

Gruß
Fabian

impjor

Antworten
Tom Com
  • Forum-Beiträge: 203

20.12.2013, 16:56:39 via Website

Was bedeutet das:
12-20 16:55:49.421: E/AndroidRuntime(18873): FATAL EXCEPTION: main
12-20 16:55:49.421: E/AndroidRuntime(18873): java.lang.IllegalStateException: Could not find a method (View) in the activity class at.tomcom.strangefly.GameActivity for onClick handler on view class android.widget.Button with id 'Pause'
12-20 16:55:49.421: E/AndroidRuntime(18873): at android.view.View$1.onClick(View.java:3775)
12-20 16:55:49.421: E/AndroidRuntime(18873): at android.view.View.performClick(View.java:4421)
12-20 16:55:49.421: E/AndroidRuntime(18873): at android.view.View$PerformClick.run(View.java:18190)
12-20 16:55:49.421: E/AndroidRuntime(18873): at android.os.Handler.handleCallback(Handler.java:725)
12-20 16:55:49.421: E/AndroidRuntime(18873): at android.os.Handler.dispatchMessage(Handler.java:92)
12-20 16:55:49.421: E/AndroidRuntime(18873): at android.os.Looper.loop(Looper.java:175)
12-20 16:55:49.421: E/AndroidRuntime(18873): at android.app.ActivityThread.main(ActivityThread.java:5279)
12-20 16:55:49.421: E/AndroidRuntime(18873): at java.lang.reflect.Method.invokeNative(Native Method)
12-20 16:55:49.421: E/AndroidRuntime(18873): at java.lang.reflect.Method.invoke(Method.java:511)
12-20 16:55:49.421: E/AndroidRuntime(18873): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
12-20 16:55:49.421: E/AndroidRuntime(18873): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
12-20 16:55:49.421: E/AndroidRuntime(18873): at dalvik.system.NativeStart.main(Native Method)
12-20 16:55:49.421: E/AndroidRuntime(18873): Caused by: java.lang.NoSuchMethodException: [class android.view.View]
12-20 16:55:49.421: E/AndroidRuntime(18873): at java.lang.Class.getConstructorOrMethod(Class.java:460)
12-20 16:55:49.421: E/AndroidRuntime(18873): at java.lang.Class.getMethod(Class.java:915)
12-20 16:55:49.421: E/AndroidRuntime(18873): at android.view.View$1.onClick(View.java:3768)
12-20 16:55:49.421: E/AndroidRuntime(18873): ... 11 more
Ich kapier einfach nicht was der Fehler sein soll

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

20.12.2013, 18:47:14 via App

Tom Com
Could not find a method (View) in the activity class at.tomcom.strangefly.GameActivity for onClick handler on view class android.widget.Button with id 'Pause'
Ganz ehrlich? Das kann sogar Google Übersetzer übersetzen!
Hast du dir das Log mal ein mal angesehen??

LG

Liebe Grüße impjor.

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

San Blarnoi

Antworten
Tom Com
  • Forum-Beiträge: 203

21.12.2013, 12:54:20 via Website

Ja aber auch beim Deutschen versteh ich nur Bahnhof.
Könnt ihr bitte mal einen Blick auf die Methode, wo der Pause(Button) vorkommt, werfen:
1public void pause(){
2 handler.postDelayed(this,INTERVALL);
3 Button pause = (Button)findViewById(R.id.Pause);
4 final Dialog dialog = new Dialog(this, android.R.style.
5 Theme_Translucent_NoTitleBar_Fullscreen);
6 pause.setOnClickListener(new OnClickListener(){
7 @Override
8 public void onClick(View v){
9
10 dialog.setContentView(R.layout.pause);
11 Button fortsetzen = (Button)dialog.findViewById(R.id.Fortsetzen);
12 fortsetzen.setOnClickListener(new OnClickListener(){
13 @Override
14 public void onClick(View v){
15 dialog.dismiss();
16
17 }
18
19 });
20
21 dialog.show();
22 }
23 });
24 }

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Tom Com
  • Forum-Beiträge: 203

21.12.2013, 18:22:11 via Website

Was meinst du mit onClick für denselben Button setzen. Bin erst ein anfänger
sorry

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Tom Com
  • Forum-Beiträge: 203

21.12.2013, 18:42:30 via Website

Ich habs schon entdeckt habe jetzt den onClick vom Button entfernt. Da ich es mit button.setOnClickListener mache

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Tom Com
  • Forum-Beiträge: 203

21.12.2013, 19:55:54 via Website

Wie kann man eine Activity pausieren? Hab schon ein Pausendialog erstellt der auch problemlos öffnet und schließt.

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

21.12.2013, 20:39:01 via Website

Warum willst du eine Activity "pausieren"? Was meinst du überhaupt damit?
Bitte drücke dich deutlicher aus.

LG

Liebe Grüße impjor.

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

Antworten
Tom Com
  • Forum-Beiträge: 203

22.12.2013, 13:44:54 via Website

Ich wollte ein Spiel entwickeln. Mit einen Pausenmenü. Die GameActivity soll da pausiert werden. Wie mach ich das am besten?

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

22.12.2013, 15:25:58 via App

Du musst schon selber in deiner Spiellogik schauen, ob das Spiel pausiert wird. Du kannst nicht einfach eine Activity pausieren.

LG

Liebe Grüße impjor.

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

Antworten
Tom Com
  • Forum-Beiträge: 203

22.12.2013, 19:12:19 via App

Und wie mach ich das am Besten?

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

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

22.12.2013, 20:07:44 via App

impjor
Du musst schon selber in deiner Spiellogik schauen

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

Antworten
Fabian Simon
  • Forum-Beiträge: 359

24.12.2013, 10:32:09 via Website

Fabian Simon

@Tom Com :
Du solltest dir folgwende Fragen stellen.
Hast du Erfahrung mit OOP, Java, Datenstrukturen, Programm Strukturierung etc.
Wenn nicht wäre es angebracht sich diese Intensive anzueigenen bevor man an solch ein Projekt geht.
Gerade OOP und das Verständnis der Erbvorgäng hilft dir viel weiter um das ganze zu verstehen.
Ich wiederhole es gern nochmal.
Einfaches drauflos Programmieren ohne Log zu verstehen und die Grundlegende Arten des OOPs zu verstehen ist nicht sinnvoll!
Taste dich ran z.B.:
lerne erst Java und nach 2-3 Monaten lernen der Grundstrukturen kannst du das ganze zusammen mit Android noch machen ;)

Gruß
Fabian

Antworten
Tom Com
  • Forum-Beiträge: 203

24.12.2013, 14:10:42 via Website

Nur kurz wäre es möglich eine if für den onClickListener?
Also wenn er gedrückt wird, dann...
Wenn nicht (else), dann...

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

24.12.2013, 15:38:20 via App

Das macht keinen Sinn.
Der OnClickListener wird nur ausgeführt, wenn er geklickt wird! Deshalb heißt er ja so.
Wenn du mittels if abfragen willst, ob der Button gedrückt ist, müsste du es ja immer wieder neu prüfen. Das ergibt keinen Sinn und würde nur Prozessor/Akku belasten.
LG

Liebe Grüße impjor.

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

Antworten
Tom Com
  • Forum-Beiträge: 203

19.02.2014, 08:00:12 via Website

Ich weiß es ist viel Zeit vergangen. Aber wie macht das mit der Pause z.B. Temple Run, dass nachher die Zeit runtergezählt wird. Habe ja sowieso ein Buch, aber da steht das nicht drinnen

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

19.02.2014, 16:35:43 via App

Welche Pause in TempelRun? Bitte drücke dich genauer aus.
Du könntest z.B. mittels Handler#postDelayed() Anweisungen erst nach ein paar (Milli-)Sekunden starten? Größer Abstände kann man mit dem AlarmManager erreichen.

LG

Liebe Grüße impjor.

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

Antworten
Tom Com
  • Forum-Beiträge: 203

21.02.2014, 07:55:12 via Website

Das mit Dialog öffnen schaffe ich schon. So will es ich machen: Dialog öffnet sich dabei wird das Spiel pausiert. Bei Fortsetzen wird ein Toast angezeigt und in 3 Sekunden das Spiel fort gesetzt. Wie soll ich das am besten machen?

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Tom Com
  • Forum-Beiträge: 203

21.02.2014, 17:15:39 via Website

impjor
Wurde doch schon alles gesagt: Eine Möglichkeit ist der Handler.
Aber wie kann ich einstellen, dass der Handler solang aktiv ist bis man auf Weiter drückt?

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Tom Com
  • Forum-Beiträge: 203

21.02.2014, 17:21:39 via Website

Hab ich ja schon geagt: Das Spiel soll pausieren, sobald ich den Pause-Dialog öffne.

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

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

21.02.2014, 17:29:53 via App

Beim start des Dialogs spiel pausieren. Dann aud den OnClick des dialogs hören wenn der btn geklickt wid dann spiel start

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

Antworten
Tom Com
  • Forum-Beiträge: 203

21.02.2014, 17:35:30 via Website

Pascal P.
Beim start des Dialogs spiel pausieren.
Wie? Die Antwort auf das such ich grade

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

21.02.2014, 18:38:31 via Website

Tom Com
Pascal P.
Beim start des Dialogs spiel pausieren.
Wie? Die Antwort auf das such ich grade
Da musst du dir natürlich selber irgendetwas überlegen... Woher sollen wir wissen, wie dein Spiel funktioniert / aufgebaut etc. ist?

LG

Liebe Grüße impjor.

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

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

21.02.2014, 18:46:35 via App

Du brauchst in deinem Spiel halt eine pause und starte funktion.

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

Antworten