2016-03-26 6 views
0

Meine App wird heruntergefahren, wenn Sie auf eine Schaltfläche klicken. Wer weiß warum? Und wenn Sie irgendwelche Fehler finden, sagen Sie es mir bitte;) Diese Aktivität besteht aus zwei Tasten, die, wenn sie gedrückt werden, einen TimePickerDialog anzeigen und die Zeit speichern.Kann jemand, der android Studio verwendet, mir sagen, was zu tun ist?

Hier ist mein Code:

package app.alexdickson.com.workout1; 

import android.app.Dialog; 
import android.app.TimePickerDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageButton; 
import android.widget.TimePicker; 
import android.widget.Toast; 


public class Main2Activity extends AppCompatActivity implements View.OnClickListener{ 
ImageButton botoFlexio; 
ImageButton botoAbdominals; 
static final int DIALOG_ID = 0; 
int hour_x; 
int minute_x; 
int hourDefinitivaFlexio; 
int minuteDefinitvaFlexio; 
int hourDefinitivaAbs; 
int minuteDefinitivaAbs; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 

    botoFlexio = (ImageButton) findViewById(R.id.botoFlexio); 
    botoAbdominals = (ImageButton) findViewById(R.id.botoAbdominals); 
botoFlexio.setOnClickListener(this); 
botoAbdominals.setOnClickListener(this); 


} 

@Override 
public void onClick(View v) { 
    switch (v.getId()){ 
     case R.id.botoFlexio: 
      botoFlexio.setBackgroundResource(R.drawable.flexioclicat); 
      showDialog(DIALOG_ID); 
      hourDefinitivaFlexio = hour_x; 
      minuteDefinitvaFlexio = minute_x; 
      break; 

     case R.id.botoAbdominals: 
      botoFlexio.setBackgroundResource(R.drawable.abdominalsclicat); 
      showDialog(DIALOG_ID); 
      hourDefinitivaAbs = hour_x; 
      minuteDefinitivaAbs = minute_x; 
      break; 

    } 
} 

@Override 
protected Dialog onCreateDialog(int id) { 
    if (id == DIALOG_ID) 

     return new TimePickerDialog(Main2Activity.this, kTimePickerListener, hour_x, minute_x, true); 
    return null; 
} 

protected TimePickerDialog.OnTimeSetListener kTimePickerListener = 
     new TimePickerDialog.OnTimeSetListener() { 
      @Override 
      public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
       hour_x = hourOfDay; 
       minute_x = minute; 
       Toast.makeText(Main2Activity.this, hour_x + ": " + minute_x, Toast.LENGTH_LONG).show(); 
      } 
     }; 

Und hier ist mein 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="wrap_content" 
android:weightSum="2" 
android:orientation="horizontal" 
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" > 

<ImageButton 
    android:layout_width="0dp" 
    android:layout_height="400dp" 
    android:layout_weight="1" 
    android:id="@+id/botoAbdominals" 
    android:background="@drawable/abdominals" 
    android:contentDescription="ImatgeAbdominals" 
    android:layout_marginTop="50dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginLeft="10dp" 
    /> 


<ImageButton 
    android:layout_width="0dp" 
    android:layout_height="400dp" 
    android:layout_weight="1" 
    android:id="@+id/botoFlexio" 
    android:layout_gravity="top" 
    android:layout_marginTop="50dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:background="@drawable/flexio" 
    android:contentDescription="ImatgeFlexio" 
    /> 

Danke für Ihre Hilfe !!!!

Antwort

0

Registrieren Sie den Listener mit Ihrer Schaltfläche, nachdem Sie ihn initialisiert haben.

botoFlexio.setOnClickListener(this); 
botoAbdominals.setOnClickListener(this); 
+0

Jetzt schaltet es nach unten und es gibt diese Fehler: 03-26 14: 33: 35,746 1682-1682 /? E/art: OutOfMemoryError auslösen "Konnte eine 32099592-Byte-Zuweisung nicht mit 2030692 freien Bytes und 1983KB bis OOM zuordnen" 03-26 14: 33: 35.761 1682-1682 /? E/AndroidRuntime: FATALE AUSNAHME: Haupt Prozess: app.alexdickson.com.workout1, PID: 1682 java.lang.OutOfMemoryError: Konnte eine 32099592 Bytezuordnung mit 2030692 freien Bytes und 1983KB bis OOM –

+0

@AlexiaWhite vermutlich nicht zuordnen weil die Bilder, die du für die ImageButtons verwendest, zu groß sind. – Titus

+0

was genau Größe Ihres Bildes, das Sie als Hintergrund des Bildknopfes einstellen. –

0

Sie müssen Listener auf die ImageButton s setzen.

Zum Beispiel:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    .... 
    botoFlexio.setOnClickListener(this); 
    botoAbdominals.setOnClickListener(this); 
} 
Verwandte Themen