2016-08-28 2 views
1

Я работаю над проектом в Java-Mail API, где у меня есть несколько полей и кнопка, когда я нажимаю кнопку, почта будет отправлена. Но проблема в том, что у меня есть класс, который расширяет фрагмент другого класса, который расширяет Activity, и я не знаю, как вставлять эти два класса.хотите использовать 2 класса сразу

Вот первый класс:

public class Contact_Fragment1 extends Fragment { 
    private Activity myActivity; 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.tabfragment_sendmail, container, false); 

     return v; 
    } 
} 

В tabfragment_sendmail У меня есть несколько полей и кнопку, я хочу, чтобы выполнить ниже класса, когда кнопка нажата.

public class OutsideClass extends Activity implements View.OnClickListener { 

    Session session = null; 
    ProgressDialog pdialog = null; 
    Context context = null; 
    EditText reciep, sub, msg; 
    String rec, subject, textMessage; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     context = this; 

     Button login = (Button) findViewById(R.id.buttonSend); 
     reciep = (EditText) findViewById(R.id.etEmail); 
     sub = (EditText) findViewById(R.id.etSubject); 
     msg = (EditText) findViewById(R.id.etMessage); 

     login.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View view) { 
     rec = reciep.getText().toString(); 
     subject = sub.getText().toString(); 
     textMessage = msg.getText().toString(); 

     Properties props = new Properties(); 
     props.put("mail.smtp.host", "smtp.gmail.com"); 
     props.put("mail.smtp.socketFactory.port", "465"); 
     props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.port", "465"); 

     session = Session.getDefaultInstance(props, new Authenticator() { 
      @Override 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication("[email protected]", "xxxxxx"); 
      } 
     }); 

     pdialog = ProgressDialog.show(context, "", "Sending Mail....", true); 

     RetreiveFeedTask task = new RetreiveFeedTask(); 
     task.execute(); 
    } 

    class RetreiveFeedTask extends AsyncTask<String, Void, String> { 

     @Override 
     protected String doInBackground(String... strings) { 

      try { 
       Message message = new MimeMessage(session); 
       message.setFrom(new InternetAddress("[email protected]")); 
       message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(rec)); 
       message.setSubject(subject); 
       message.setContent(textMessage, "text/html; charset=utf-8"); 

       Transport.send(message); 
      } catch (MessagingException e) { 
       e.printStackTrace(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String aVoid) { 

      pdialog.dismiss(); 
      reciep.setText(""); 
      msg.setText(""); 
      sub.setText(""); 
      Toast.makeText(getApplicationContext(), "Message Sent", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

Может ли кто-нибудь помочь мне с этой проблемой?

ответ

0

Итак, ваша проблема заключается в том, что вы не знаете, как начать другое действие, когда ваша кнопка будет нажата?

Вы можете сделать это, как этот

public void onClick(View v) { 
    Intent StartMyActivity = new Intent(this,Your_Activity.class); 
    //Enter optional Intent.putExtras here 
    start Activity(StartMyActivity); 
} 

если и хотят, чтобы начать от не деятельности, Вы должны заменить «это» с контекстом (я думаю getApplicationContext() должен работать? Havent пытался что жесткая)

+0

По-прежнему отображается ошибка, говоря, что невозможно разрешить конструктор ........ –

+0

попробуйте заменить 'this'' getActivity(); ' – BAAAZINGA

+0

Спасибо, он работает ,,,, начал свою деятельность .. хотя я получил другая ошибка, я надеюсь, что смогу исправить это ..... –

Смежные вопросы