方法没有从按钮点击mainactivity调用

问题描述:

我已经创建了两个活动。活动主要有按钮,并点击这个按钮我调用其他类扩展到AppCompActivity的方法。方法名称是mailconfig,如下所示。机密信息已从参数中删除。方法没有从按钮点击mainactivity调用

public class ButtonActionFrontPage extends AppCompatActivity{ 


    protected void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
    } 

    public void mailconfig(String message) throws EmailException { 

     String username = ""; 
     String password = ""; 
     String from = ""; 
     String replyto = ""; 

     String mailto = ""; 
     String subject = ""; 

     Email email = new SimpleEmail(); 
     email.setSSLOnConnect(true); 
     email.isStartTLSEnabled(); 
     email.setHostName(""); 
     email.setSmtpPort(26); 
     email.setSubject(subject); 
     email.addReplyTo(replyto); 
     email.setFrom(from); 
     email.setAuthenticator(new DefaultAuthenticator(username, password)); 
     email.setMsg(message); 
     email.addTo(mailto); 
     email.send(); 

     Toast.makeText(ButtonActionFrontPage.this,"Thanks for submitting ",Toast.LENGTH_SHORT).show(); 
     System.out.println("Sent"); 

    } 
} 

我使用下面的代码来调用上面的方法。

feedbackbtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try { 
        ButtonActionFrontPage buttonActionFrontPage = new ButtonActionFrontPage(); 
        String message = quickfbet.getText().toString(); 
        buttonActionFrontPage.mailconfig(message); 
       } catch (EmailException e) { 
        e.printStackTrace(); 
       } 


      } 
     }); 

这段代码有什么问题,为什么不执行。

+0

尝试做同样的事情,只是删除扩展AppCompatActivity和onCreate方法在ButtonActionFrontPage –

+0

而不是在活动类中创建它,在简单的java类中创建您的电子邮件方法,然后从那里调用它 –

+0

1.如果我删除了延伸和oncreate,我必须删除Toast另外,作为开始显示错误。而且,即使删除后,在这种情况下也不起作用。令人惊讶的是,当我用sop语句创建一个简单的方法时,称之为它的工作。 –

Java类有所不同相对于AndroidActivity。由于Android Activity有一些名为life cycle的内容。

如果必须实现某些功能,则甚至不创建活动。只需一个普通的Java类就足够了。

活动可以在有用户交互时使用(实际上并非总是如此,而完全取决于业务逻辑)。为了启动活动,使用Intent。这将启动与内存分配和其他相关功能的活动。

对于你的情况,按钮的启动应在ButtonActionFrontPage的onCreate,并通过点击监听器来完成如下图所示

Button feedbackbtn; 
protected void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     feedbackbtn=(Button)findViewById(R.id.button_ID); 
     feedbackbtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       new PlainJavaClass().mailconfig("msg",ButtonActionFrontPage.class); 
       } 
     }); 
    } 

业务逻辑只需使用PlainJavaClass与方法和context,如果你要表现出任何Toast/Dialog/ProgressBar

class PlainJavaClass{ 

     public void mailconfig(String message, Context context) { 

     Log.v("TAG","mailconfig with message="+message); 
     //Your logic 
     Toast.makeText(context,"Thanks for submitting ",Toast.LENGTH_SHORT).show(); 
    } 

} 
+0

进行了更改,但仍然没有效益。没有得到烤面包,电子邮件和SOP。 –

+0

你有调试吗?把一些Log.v并检查,如果发送消息的步骤是否完成 – Stallion

+0

我已经更新了代码。检查你的控制是否符合要求。 – Stallion

类会像这样

feedbackbtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try { 
        ButtonActionFrontPage buttonActionFrontPage = new ButtonActionFrontPage(); 
        String message = quickfbet.getText().toString(); 
        buttonActionFrontPage.mailconfig(getApplicationContext(),message); 
       } catch (EmailException e) { 
        e.printStackTrace(); 
       } 


      } 
     }); 
+0

没有扩展,代码在Toast上发生错误。错误:(43,10)错误:找不到合适的makeText方法(ButtonActionFrontPage,String,int) 方法Toast.makeText(Context,CharSequence,int)不适用 (参数不匹配; ButtonActionFrontPage不能转换为上下文) 方法Toast.makeText(Context,int,int)不适用 (参数不匹配; ButtonActionFrontPage不能转换为Context) –

+0

这是另一个错误,如果我更改了调用函数。错误:(51,42)错误:类ButtonActionFrontPage中的方法mailconfig不能应用于给定的类型; 要求:字符串 发现:语境,字符串 原因:实际的和正式的参数列表长度 –

+0

不同,你可以请把你的面包线在这里 –

public class ButtonActionFrontPage extends AppCompatActivity{ 

static ButtonActionFrontPage instance; 


    protected void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     instance = this; 
    } 

    public static ButtonActionFrontPage getInstance() { 
     return instance; 
    } 

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     instance = null; 
    } 
} 

public class ButtonActionFrontPage { 


    public void mailconfig(Context context,String message) throws EmailException { 

     String username = ""; 
     String password = ""; 
     String from = ""; 
     String replyto = ""; 

     String mailto = ""; 
     String subject = ""; 

     Email email = new SimpleEmail(); 
     email.setSSLOnConnect(true); 
     email.isStartTLSEnabled(); 
     email.setHostName(""); 
     email.setSmtpPort(26); 
     email.setSubject(subject); 
     email.addReplyTo(replyto); 
     email.setFrom(from); 
     email.setAuthenticator(new DefaultAuthenticator(username, password)); 
     email.setMsg(message); 
     email.addTo(mailto); 
     email.send(); 

     Toast.makeText(context,"Thanks for submitting ",Toast.LENGTH_SHORT).show(); 
     System.out.println("Sent"); 

    } 
} 

,并调用函数和调用函数:

feedbackbtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try { 
        ButtonActionFrontPage buttonActionFrontPage = ButtonActionFrontPage.getInstance();      String message = quickfbet.getText().toString(); 
        buttonActionFrontPage.mailconfig(message); 
       } catch (EmailException e) { 
        e.printStackTrace(); 
       } 
      } 
     });