2012-12-12 63 views
0

我構建了一個選項菜單。處理髮送電子郵件的其中一個按鈕不起作用。意圖對象不起作用

這裏是方法:

public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main_page, menu); 
     return true; 
    } 

public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.settings: Toast.makeText(this, "You pressed the settings!", Toast.LENGTH_LONG).show(); 
           break; 
      case R.id.exit:  System.exit(0); //close the program + kill it from memory 
           break; 
      case R.id.contactUs:sendEmail(); 
           break; 
     } 
     return true; 
    } 

private void sendEmail(){ 
     Intent mailIntent = new Intent(); 
     mailIntent.setAction(Intent.ACTION_SEND); 
     mailIntent.setType("text/plain"); 
     mailIntent.putExtra(mailIntent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
     mailIntent.putExtra(mailIntent.EXTRA_SUBJECT,"Re:Your Application"); 
    } 

出於某種原因,任何項目我點擊,除了聯繫我們的項目,正在工作。 當我點擊contactUs項目時,它關閉菜單欄,什麼都不做......

需要幫助。

編輯:

我改變了以下內容:

private void sendEmail(){ 
    Intent mailIntent = new Intent(); 
    mailIntent.setAction(Intent.ACTION_SEND); 
    mailIntent.setType("text/plain"); 
    mailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
    mailIntent.putExtra(Intent.EXTRA_SUBJECT,"Re:Your Application"); 
    startActivity(Intent.createChooser(mailIntent, "[email protected]")); 
} 

的領域仍然無法自動填寫..

+1

你必須開始intent,startActivity()。像startActivity(Intent.createChooser(mailIntent,「發送電子郵件」)); –

回答

5

你必須調用

startActivity(Intent.createChooser(mailIntent, "Choose an Email client :")); 

編輯:

更改這些行

mailIntent.putExtra(mailIntent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
mailIntent.putExtra(mailIntent.EXTRA_SUBJECT,"Re:Your Application"); 

mailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
mailIntent.putExtra(Intent.EXTRA_SUBJECT,"Re:Your Application"); 

編輯:

完整的方法應該是這樣的:

private void sendEmail(){ 
    Intent mailIntent = new Intent(); 
    mailIntent.setAction(Intent.ACTION_SEND); 
    mailIntent.setType("text/plain"); 
    mailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
    mailIntent.putExtra(Intent.EXTRA_SUBJECT,"Re:Your Application"); 
    startActivity(Intent.createChooser(mailIntent, "Choose an Email client:")); 
} 
+0

我可以添加(在我的sendEmail()方法的底線):startActivity(mailIntent); ? – Adam

+0

是的。您的方法的最後一行將是startActivity(...);所以你的意圖會被解僱。 –

+0

我編輯此線程與另一個問題,防止應用程序自動填寫請求的字段... – Adam

2

你需要調用:

startActivity(Intent.createChooser(mailIntent,"Choose E-mail client:")); 
+0

當我沒有使用Chooser(使用下面這行代碼:'startActivity(mailIntent);'),它仍然讓我選擇短信到郵件應用程序,這是你的代碼行之間的唯一區別,是上面的文字對我來說,它只是Android操作系統默認的一個(「完成操作使用」)... – Adam