2013-02-25 3 views
0

J'ai les classes ContactUs.java et Mail.java.Appeler une autre méthode de classe à l'intérieur du bouton

Je souhaite appeler la méthode de la classe Mail vers la méthode Contactus onclicklistner.

package com.hesham.sams; 



public class ContactusActivity extends Activity { 


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

    TextView subjectTxt = (TextView) findViewById(R.id.subjectTxt); 
    TextView emailTxtus = (TextView) findViewById(R.id.emailTxtus); 
    final TextView messageTxt = (TextView) findViewById(R.id.messageTxt); 
    Button lButton = (Button)findViewById(R.id.sendbtn); 

    String hh = messageTxt.getText().toString(); 

    Spinner s = (Spinner) findViewById(R.id.spinner1); 

    Typeface font = Typeface.createFromAsset(getAssets(), "extrafine.ttf"); 
    subjectTxt.setTypeface(font); 
    emailTxtus.setTypeface(font); 
    messageTxt.setTypeface(font); 

    String array_spinner[]; 
    array_spinner=new String[3]; 
    array_spinner[0]="general"; 
    array_spinner[1]="quisiton"; 
    array_spinner[2]="suggsution"; 

    Spinner spinner = new Spinner(this); 
     ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
       this, android.R.layout.simple_spinner_item, array_spinner); 
     spinnerArrayAdapter.setDropDownViewResource(  android.R.layout.simple_spinner_dropdown_item); 

     spinner = (Spinner) findViewById(R.id.spinner1); 
     spinner.setAdapter(spinnerArrayAdapter); 


    //ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item, array_spinner); 
    //adapter.setDropDownViewResource(R.layout.special_spinner_dropdown); 
    //s.setAdapter(adapter); 




     // send Botton 
    //public string hesham(){ 


     lButton.setOnClickListener(
       new View.OnClickListener() 
       { 
        public void onClick(View view) 
        { 
         // here is the proeblem 
         Mail.send(); 

        } 
       }); 




       // ignoring 
       final class SpinnerActivity implements OnItemSelectedListener { 

        public void onItemSelected(AdapterView<?> parent, View view, 
          int pos, long id) { 
         // An item was selected. You can retrieve the selected item using 
         // parent.getItemAtPosition(pos) 
         Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
         spinner.setOnItemSelectedListener(this); 
        } 

        public void onNothingSelected(AdapterView<?> parent) { 
         // Another interface callback 
        } 







      } 

}// end of on create 

       } // end of class 

deuxième classe:

package com.hesham.sams; 

import java.util.Date; 
import java.util.Properties; 
import javax.activation.CommandMap; 
import javax.activation.MailcapCommandMap; 
import javax.mail.BodyPart; 
import javax.mail.Multipart; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeBodyPart; 
import javax.mail.internet.MimeMessage; 
import javax.mail.internet.MimeMultipart; 

public class Mail extends javax.mail.Authenticator { 

    private String _user; 
    private String _pass; 

    private String[] _to; 
    private String _from; 

    private String _port; 
    private String _sport; 

    private String _host; 

    private String _subject; 
    private String _body; 

    private boolean _auth; 

    private boolean _debuggable; 

    private Multipart _multipart; 


    public Mail() { 
    _host = "smtp.gmail.com"; // default smtp server 
    _port = "465"; // default smtp port 
    _sport = "465"; // default socketfactory port 

    _user = ""; // username 
    _pass = ""; // password 
    _from = ""; // email sent from 
    _subject = ""; // email subject 
    _body = ""; // email body 

    _debuggable = false; // debug mode on or off - default off 
    _auth = true; // smtp authentication - default on 

    _multipart = new MimeMultipart(); 

    // There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added. 
    MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); 
    mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); 
    mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); 
    mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); 
    mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); 
    mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); 
    CommandMap.setDefaultCommandMap(mc); 
    } 

    public Mail(String user, String pass) { 
    this(); 

    _user = user; 
    _pass = pass; 
    } 

    public boolean send() throws Exception { 
    Properties props = _setProperties(); 

    if(!_user.equals("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) { 
     Session session = Session.getInstance(props, this); 

     MimeMessage msg = new MimeMessage(session); 

     msg.setFrom(new InternetAddress(_from)); 

     InternetAddress[] addressTo = new InternetAddress[_to.length]; 
     for (int i = 0; i < _to.length; i++) { 
     addressTo[i] = new InternetAddress(_to[i]); 
     } 
     msg.setRecipients(MimeMessage.RecipientType.TO, addressTo); 

     msg.setSubject(_subject); 
     msg.setSentDate(new Date()); 

     // setup message body 
     BodyPart messageBodyPart = new MimeBodyPart(); 
     messageBodyPart.setText(_body); 
     _multipart.addBodyPart(messageBodyPart); 

     // Put parts in message 
     msg.setContent(_multipart); 

     // send email 
     Transport.send(msg); 

     return true; 
    } else { 
     return false; 
    } 
    } 

    /*public void addAttachment(String filename) throws Exception { 
    BodyPart messageBodyPart = new MimeBodyPart(); 
    DataSource source = new FileDataSource(filename); 
    messageBodyPart.setDataHandler(new DataHandler(source)); 
    messageBodyPart.setFileName(filename); 

    _multipart.addBodyPart(messageBodyPart); 
    } */ 

    @Override 
    public PasswordAuthentication getPasswordAuthentication() { 
    return new PasswordAuthentication(_user, _pass); 
    } 

    private Properties _setProperties() { 
    Properties props = new Properties(); 

    props.put("mail.smtp.host", _host); 

    if(_debuggable) { 
     props.put("mail.debug", "true"); 
    } 

    if(_auth) { 
     props.put("mail.smtp.auth", "true"); 
    } 

    props.put("mail.smtp.port", _port); 
    props.put("mail.smtp.socketFactory.port", _sport); 
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.socketFactory.fallback", "false"); 

    return props; 
    } 

    // the getters and setters 
    public String getBody() { 
    return _body; 
    } 

    public void setBody(String _body) { 
    this._body = _body; 
    } 

    // more of the getters and setters ….. 
} 

Note: Je ne peux pas utiliser s'étendre parce que chacun de cette classe a défendre déjà étend une autre classe. et savez-vous que Java ne peut pas étendre deux classes en même temps.

Répondre

0

Cela dépend si les classes sont statiques ou non. Si elles sont statiques, vous pouvez simplement les utiliser en ligne Mail.MethodName();

Si elles ne sont pas statiques, vous devez créer une instance d'entre eux d'abord

Mail mc = new Mail(); 

mc.MethodName(); 
+0

non ce n'est pas statique j'ai mais la classe anouther statique mais il y a beaucoup d'erreurs, et j'ai mis instance mais ne fonctionnait pas. –

+0

Vous devez poster tout votre code et nettoyer votre question. Si vous ne votez pas, c'est sûr. –

+0

J'ai éditer mon Q –

0

vous pouvez le faire en n'utilisant une classe annonymous. Créez une classe complète et donnez-lui un constructeur qui prend une référence à toutes les données dont il a besoin. Stockez cela dans les variables membres de la classe. Ensuite, dans onClick, vous pouvez référencer cette variable membre. Lorsque vous appelez setOnClickListener, transmettez-lui simplement une nouvelle instance de cette classe.

+0

exemple s'il vous plaît? –

Questions connexes