2016-02-24 1 views
0

Je fais une application de cuisson et j'ai créé un bouton favori qui semble fonctionner correctement je clique dessus et il change de couleur. J'ai essayé de créer un toast où quand je clique sur le bouton un message wil venir direFaire griller avec les boutons favoris Android

added to favourites 

et

removed from favourites 

le code que je l'ai utilisé pour le toast n'a pas d'erreurs et l'application fonctionne parfaitement, mais le pain grillé ne semble pas

ici est mon code que je l'ai utilisé

Toast.java

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.CheckBox; 
import android.widget.Toast; 

public class Favourite_Toast extends Activity { 

private CheckBox fav; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.recipe); 
    addListenerOnChk(); 
} 

public void addListenerOnChk() { 

    fav = (CheckBox) findViewById(R.id.checkBox); 

    fav.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      if (((CheckBox) v).isChecked()) { 
       Toast.makeText(Favourite_Toast.this, 
         "Added to Favourites", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 
} 
} 

favourite.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_checked="true" 
    android:drawable="@drawable/heart_red" /> 
<item android:state_checked="false" 
    android:drawable="@drawable/heart_grey" /> 
</selector> 

recipe.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/RelativeLayout1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/jbsbackground2" 
android:orientation="vertical" > 

<ImageView 
    android:id="@+id/iv_detail" 
    android:layout_width="fill_parent" 
    android:layout_height="150dp" 
    android:scaleType="centerCrop" 
    android:src="@drawable/barbecuedporkribs" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="fill_parent" 
    android:layout_height="10dp" 
    android:layout_below="@+id/iv_detail" 
    android:background="#3D3C3A" /> 

<ScrollView 
    android:id="@+id/scrollView1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/button1" > 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:layout_below="@+id/scrollView1" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true"> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_marginTop="5dp" 
      android:text="@string/textView2" 
      android:layout_toLeftOf="@id/favourites" 
      android:textColor="#000000" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/tvName" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/tvName" 
      android:textColor="#000000" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textStyle="italic" 
      android:layout_below="@+id/textView2" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" /> 

     <CheckBox 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/checkBox" 
      android:button="@drawable/favourite" 
      android:checked="false" 
      android:layout_alignTop="@+id/textView2" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentEnd="true" 
      android:layout_marginRight="46dp" 
      android:layout_marginEnd="46dp" 
      android:clickable="true" /> 

     <TextView 
      android:id="@+id/tvTD" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/tvTD" 
      android:textColor="#000000" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textStyle="bold" 
      android:layout_below="@+id/checkBox" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" /> 

     <TextView 
      android:id="@+id/tvIngredients" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_below="@+id/tvTD" 
      android:layout_marginTop="2dp" 
      android:text="@string/tvIngredients" 
      android:textColor="#000000" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textStyle="italic" /> 

     <TextView 
      android:id="@+id/tvK" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_below="@+id/tvIngredients" 
      android:layout_marginTop="5dp" 
      android:text="@string/tvK" 
      android:textColor="#000000" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/tvPreparation" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_below="@+id/tvK" 
      android:layout_marginTop="2dp" 
      android:text="@string/tvPreparation" 
      android:textColor="#000000" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textStyle="italic" /> 


    </RelativeLayout> 
</ScrollView> 

</RelativeLayout> 

Je l'ai utilisé une case à cocher pour le bouton favori pourrait-il être la raison pour laquelle le toast ne fonctionne pas

Aussi tout le monde serait en mesure de me dire comment faire le code de sorte que, une fois que vous avez cliqué sur le bouton favori, il restera cliqué, car il ne reste pas cli cked sur

Merci à l'avance

Répondre

0

Je vous recommande de changer votre OnClickListener avec OnCheckedChangeListener. Il sera invoqué lorsque l'utilisateur vérifie/décoche l'état de CheckBox. À mon humble avis, c'est le meilleur écouteur pour ce widget.

0

Essayez le code ci-dessous

if ((fav.isChecked()) { 
    Toast.makeText(Favourite_Toast.this, "Added to Favourites", Toast.LENGTH_LONG).show(); 
} 
else{ 
    Toast.makeText(Favourite_Toast.this, "Removed From Favourites", Toast.LENGTH_LONG).show(); 
} 
0

Utilisez ce code MainActivity ... Ce résoudrai votre problème:

public class MainActivity extends Activity { 

    private CheckBox chk; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     chk = (CheckBox) findViewById(R.id.checkBox1); 
     chk.setOnClickListener(checkboxClickListener); 

    } 

    View.OnClickListener checkboxClickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      boolean checked = ((CheckBox) view).isChecked(); 
      if (checked) { 
       Toast.makeText(MainActivity.this,"Added to favourite", Toast.LENGTH_LONG).show(); 
      } 
      else { 
       Toast.makeText(MainActivity.this,"Removed from favourite", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }; 

} 
+0

hey merci pour votre réponse, je l'ai essayé votre code mais ne pas obtenir un toast ... – john

+0

Une erreur que vous obtenez ?? – user5783725

+0

parce que j'ai testé ce code et qu'il fonctionne très bien selon vos besoins. – user5783725