Autore Topic: Far apparire un Toast dopo la pressione di un Imagebutton.  (Letto 1041 volte)

Offline tank

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
Far apparire un Toast dopo la pressione di un Imagebutton.
« il: 15 Ottobre 2012, 02:17:58 CEST »
0
Salve a tutti. Come da titolo, vorrei far apparire un toast dopo la pressione di un Imagebutton. Quel che son riuscito ad ottenere è soltanto un Imagebutton che, una volta cliccato, non fa apparire un bel niente.

Ecco i codici...

Codice (Java): [Seleziona]
package com.example.myapp;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.widget.ImageView;
import android.widget.Toast;
import android.content.Context;

public class MainActivity extends Activity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
   
 public class ImageButton1 extends ImageView {
         public ImageButton1(Context context){
                 super(context);
                 }
         @Override
         public boolean onTouchEvent(MotionEvent event){
                 super.onTouchEvent(event);
                 int action = event.getAction();
                 if(action == MotionEvent.ACTION_DOWN){
                         Toast toast=Toast.makeText(getContext(),"Bottone cliccato",Toast.LENGTH_SHORT);
                         toast.show();
                         return true;
                 }
                 return false;
         }
 }
}

Codice (XML): [Seleziona]
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/AbsoluteLayout1"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:background="@drawable/main" >


    <TableLayout
       android:layout_width="196dp"
       android:layout_height="270dp"
       android:layout_x="64dp"
       android:layout_y="142dp" >

        <TableRow
           android:id="@+id/tableRow1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content" >
            <ImageButton android:id="@+id/button1"
               android:layout_width="wrap_content"
               android:src="@drawable/button1"
               android:background="@null"/>
        </TableRow>

        <TableRow
           android:id="@+id/tableRow2"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content" >
        </TableRow>

        <TableRow
           android:id="@+id/tableRow3"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content" >
        </TableRow>

        <TableRow
           android:id="@+id/tableRow4"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content" >
        </TableRow>
    </TableLayout>

</AbsoluteLayout>
L'Imagebutton, "button1", si trova chiaramente nella prima cella della tablelayout, le altre sono ancora vuote...

Dove ho sbagliato? Perché il toast non appare?  :-(

P.S. spero di aver postato nella sezione giusta!

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Far apparire un Toast dopo la pressione di un Imagebutton.
« Risposta #1 il: 06 Novembre 2012, 19:32:42 CET »
0
ciao, penso che hai scritto un pò troppo codice... semplicemente dentro l'oncreate, inserisci questo, e dovrebbe andare (te lo commento tutto, se hai problemi chiedi pure) (te lo facci con lo switch, così ti viene più semplice inserire altri bottoni)



Codice (Java): [Seleziona]
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout..activity_main);
       
               
               ImageButton ImageButton = (ImageButton) findViewById(R.id.imageButton1); //R.id.... indica l'id del tuo bottone (lo dai dal file xml)
            //    ImageButton secondo bottone = (ImageButton) findViewById(R.id....);
            //    ImageButton terzo bottone = (ImageButton) findViewById(R.id...);
               
                View.OnClickListener gestore = new View.OnClickListener() {  //crei il listener sul click
                         
                         
                   
                          public void onClick(View view) {     //setti l'azione al click
                                                 
                            switch(view.getId()){   //per ogni pulsante fai un azione diversa
                                         
                              case R.id.imageButton1:  //lo switch agisce con gli interi, quindi metit l'id del bottone
                                   //qui va il codice per il toast, o per qualsiasi altra cosa
                         Toast toast=Toast.makeText(getContext(),"Bottone cliccato",Toast.LENGTH_SHORT);                         toast.show();
                                   break;
                              case R.id.imageButton2:
                                  //azione secondo bottone
                           break;
                           
                              case R.id.imageButton3:
                                  //azione terzo bottone
                                  break;
                            }  
                          }
                         
                        };
                           
//ora devi impostare il listener su ognuno dei bottoni (altrimenti non fanno nulla)    
                        Imagebutton.setOnClickListener(gestore);
                        secondobottone.setOnClickListener(gestore);
                        terzobottone.setOnClickListener(gestore);
               
}
    }




in questo modo, dovresti aver quello che ti serve
NON DIMENTICARE IL BREAK ALLA FINE DI OGNI CASE!! (altrimenti dopo il primo bottone, ti svolge tutte le azioni sotto

Offline thebelfastboy

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: +3
    • Mostra profilo
Re:Far apparire un Toast dopo la pressione di un Imagebutton.
« Risposta #2 il: 05 Dicembre 2012, 00:01:34 CET »
0
Nella tua activity ricercati il pulsante e setta il relativo clickListener così:

Codice (Java): [Seleziona]
public class Main extends Activity implements OnClickListener
{
       
        @Override
    public void onCreate(Bundle savedInstanceState)
    {
                super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button = (Button) findViewById(R.id.mainButton);
        button.setOnClickListener(this);
    }

public void onClick(View v)
{
if (v.getId() == R.id.mainButton)
{
   Toast t = Toast.makeText(this, "messaggio", Toast.LENGTH_LONG).show();
}
}

Semplice :D