2016-09-30 60 views
0

我已經創建了兩個活動。活動主要有按鈕,並點擊這個按鈕我調用其他類擴展到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語句創建一個簡單的方法時,稱之爲它的工作。 –

回答

0

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

0

類會像這樣

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

不同,你可以請把你的麪包線在這裏 –

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(); 
       } 
      } 
     });