Autore Topic: Contatti in Fragment  (Letto 217 volte)

Offline Ceciud

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Optimus G e Samsung Galaxy S3
  • Sistema operativo:
    Mac OS X
Contatti in Fragment
« il: 09 Luglio 2014, 14:47:16 CEST »
0
Ciao ragazzi, sto cercando di inserire la possibilità di contattare (via Email) attraverso un semplice pulsante ma mi compaiono degli errori (ho copiato il codice da un'applicazione fatta senza i fragment).

Codice (Java): [Seleziona]
public class FragmentEleven extends Fragment {
        ImageView ivIcon;
        TextView tvItemName;

        public static final String IMAGE_RESOURCE_ID = "iconResourceID";
        public static final String ITEM_NAME = "itemName";
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.contatti, container, false);
        return rootView;
       
        Button startBtn = (Button) rootView.findViewById(R.id.sendEmail);
              startBtn.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View view) {
                 sendEmail();
              }
           });

           }
           protected void sendEmail() {
              Log.i("Contattaci", "");

              String[] TO = {"xxxx@gmail.com"};
              String[] CC = {"Email da Applicazione Android"};
              Intent emailIntent = new Intent(Intent.ACTION_SEND);
              emailIntent.setData(Uri.parse("mailto:"));
              emailIntent.setType("text/plain");


              emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
              emailIntent.putExtra(Intent.EXTRA_CC, CC);
              emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Inserisci l'oggetto..");
              emailIntent.putExtra(Intent.EXTRA_TEXT, "Inserisci il testo del messaggio..");

              try {
                 startActivity(Intent.createChooser(emailIntent, "Invio Email in corso..."));
                 finish();
                 Log.i("Email inviata con successo...", "");
              } catch (android.content.ActivityNotFoundException ex) {
                 Toast.makeText(FragmentEleven.this,
                 "Nessuna applicazione trovata..", Toast.LENGTH_SHORT).show();
              }
           
         
        }
        }

Gli errori li trovate negli allegati. Cosa devo modificare per far andare tutto?

Grazie mille

Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:Contatti in Fragment
« Risposta #1 il: 09 Luglio 2014, 15:24:38 CEST »
+1
Gli errori 1 e 2 (le prime due immagini allegate) derivano dal fatto che, avendo preso il codice basato su Activity, alcune chiamate devono essere riadattate. In particolare dove prima si faceva riferimento a this (un'Activity) ora bisogna sostituire con getActivity().
Ecco le chiamate corrette.
Prima immagine:
Codice (Java): [Seleziona]
Toast.makeText(FragmentEleven.this.getActivity(),"Nessuna applicazione trovata..", Toast.LENGTH_SHORT).show();
Seconda immagine:
Codice (Java): [Seleziona]
getActivity().finish();//Sei sicuro che vuoi terminare l'activity? potrebbe contenere più di un fragment. Se non desideri terminare l'activity semplicemente elimina questa chiamata. In alternativa potresti voler rimuovere il Fragment dall'Activity
Terza immagine. in questo caso il problema sorge poiché hai inserito del codice dopo l'istruzione return. Ovviamente questo codice non verrà mai eseguito. Per risolvere basta spostare l'istruzione return come ultima istruzione del metodo:
Codice (Java): [Seleziona]
      //...
      View rootView = inflater.inflate(R.layout.contatti, container, false);
      Button startBtn = (Button) rootView.findViewById(R.id.sendEmail);
      startBtn.setOnClickListener(new View.OnClickListener() {
             public void onClick(View view) {
                    sendEmail();
             }
      });
      return rootView;
}
« Ultima modifica: 09 Luglio 2014, 15:27:50 CEST da vincenzoc »
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline Ceciud

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Optimus G e Samsung Galaxy S3
  • Sistema operativo:
    Mac OS X
Re:Contatti in Fragment
« Risposta #2 il: 10 Luglio 2014, 14:19:12 CEST »
0
Grazie mille per l'aiuto.

Funziona tutto alla perfezione  :-)