2013-06-11 82 views
0

为我的电子邮件意图添加代码后,为什么我的2图像按钮停止工作。我一直在摆弄Public Void onCreate bundle,当我移动下面的代码段时,它再次起作用。我把它们错误地嵌套了吗?有人可以纠正它吗?为什么我的2个按钮停止工作?

我的OnClickListener基本上不工作,因为按钮单击时什么也不做。

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.webkit.WebView; 
import android.widget.Button; 
import android.widget.ImageButton; 

public class contactActivity extends Activity implements OnClickListener { 

    private WebView webView; 
    private WebView webView1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.contact); 
     Button mail = (Button)findViewById(R.id.Sendbutton); 
     mail.setOnClickListener(this); 
    } 

    public void onClick(View v) { 
     switch(v.getId()) 
     { 
      case R.id.Sendbutton: 
       Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
       String[] recipients = new String[]{"email add", "",}; 
       emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients); 
       emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Sample mail"); 
       emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "This is a sample mail.."); 
       emailIntent.setType("text/plain"); 
       startActivity(Intent.createChooser(emailIntent, "Send mail client :")); 
       finish(); 
       break; 
     } 

     ImageButton ViewFacebookFeed = (ImageButton) findViewById(R.id.ViewFacebookFeed); 
     ImageButton ViewTwitterFeed = (ImageButton) findViewById (R.id.ViewTwitterFeed); 

     //Add a listener to ImageButton1 
     ViewFacebookFeed.setOnClickListener(new OnClickListener() {      
      @Override 
      public void onClick(View v) { 
       openBrowser1(); 
      }   
     });        
     ViewTwitterFeed.setOnClickListener(new OnClickListener() {      
      @Override 
      public void onClick(View v) { 
       openBrowser2(); 
      }   
     }); 
    } 
    private void openBrowser1() 
    {  
     //this intent is used to open other activity which contains another webView 
     Intent intent = new Intent(contactActivity.this,fbtwitterfeedActivity.class); 
     startActivity(intent); 
    } 
    private void openBrowser2() { 
     // TODO Auto-generated method stub 
     Intent intent1 = new Intent(contactActivity.this,twitterfeedActivity.class); 
     startActivity(intent1); 
    } 
} 
+0

你怎么知道“onClickListeners不工作”处理所有的点击? – Simon

+0

你的OnClickListener被调用了吗?你可以在那里写一条日志语句来验证? – CaseyB

+0

@CaseyB为什么要添加代码?为什么不只是一个断点? – Simon

回答

0

您把它实现的方式,你只注册了按钮点击,你点击“发送”按钮后。您在发送onClick时调用finish(),这样侦听器将永远不会被注册。在onCreate中注册监听器,然后在onClick方法中监听特定视图ID的点击。让你在适当的时候注册的点击监听器,我已经修复你的代码,你的onClick方法从所有按钮

public class contactActivity extends Activity implements OnClickListener { 

    private WebView webView; 
    private WebView webView1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.contact); 
     Button mail = (Button)findViewById(R.id.Sendbutton); 
     mail.setOnClickListener(this); 

     ImageButton viewFacebookFeed = (ImageButton) findViewById(R.id.ViewFacebookFeed); 
     viewFacebookFeed.setOnClickListener(this); 
     ImageButton viewTwitterFeed = (ImageButton) findViewById (R.id.ViewTwitterFeed); 
     viewTwitterFeed.setOnClickListener(this); 
    } 

    public void onClick(View v) { 
     switch(v.getId()) 
     { 
      case R.id.Sendbutton: 
       Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
       String[] recipients = new String[]{"email add", "",}; 
       emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients); 
       emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Sample mail"); 
       emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "This is a sample mail.."); 
       emailIntent.setType("text/plain"); 
       startActivity(Intent.createChooser(emailIntent, "Send mail client :")); 
       finish(); 
       break; 
      case R.id.ViewFacebookFeed: 
       openBrowser1(); 
       break; 
      case R.id.ViewTwitterFeed: 
       openBrowser2(); 
       break; 

     } 
    } 
    private void openBrowser1() 
    {  
     //this intent is used to open other activity which contains another webView 
     Intent intent = new Intent(contactActivity.this,fbtwitterfeedActivity.class); 
     startActivity(intent); 
    } 
    private void openBrowser2() { 
     // TODO Auto-generated method stub 
     Intent intent1 = new Intent(contactActivity.this,twitterfeedActivity.class); 
     startActivity(intent1); 
    } 
} 
+0

非常感谢这么多代码的作品。你知道如何添加输入字段和复选框来发送电子邮件 –

+0

你需要添加CheckBox和EditText元素到你的XML布局文件,然后在代码中引用它们。 – dymmeh

+0

我有他们在我的XML,但无法编码,以便他们在电子邮件中。我的发送'详细信息按钮'起作用,因为它弹出电子邮件选择器的弹出式菜单,但在消息中,我无​​法获取姓名电话日期。我的输入字段的ID是R.id.Nameinput,R.id.Phoneinput,R.id.dateinput ..... Checkboxes是R.id.Checkbox1 .Checkbox2 .Checkbox3。请指教 –

0

最好不要从活动中实现接口,而要从对象直接实现接口。 我已经rewritted你的代码,它是这样的好:

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.webkit.WebView; 
import android.widget.Button; 
import android.widget.ImageButton; 

public class contactActivity extends Activity { 

    private WebView webView; 
    private WebView webView1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.contact); 
     Button mail = (Button) findViewById(R.id.Sendbutton); 
     ImageButton ViewFacebookFeed = (ImageButton) findViewById(R.id.ViewFacebookFeed); 
     ImageButton ViewTwitterFeed = (ImageButton) findViewById(R.id.ViewTwitterFeed); 
     // Add a listener to ImageButton1 
     ViewFacebookFeed.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       openBrowser1(); 
      } 
     }); 
     ViewTwitterFeed.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       openBrowser2(); 
      } 
     }); 
     mail.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
       String[] recipients = new String[] { "email add", "", }; 
       emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients); 
       emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Sample mail"); 
       emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "This is a sample mail.."); 
       emailIntent.setType("text/plain"); 
       startActivity(Intent.createChooser(emailIntent, "Send mail client :")); 
       finish(); 
      } 

     }); 
    } 

    private void openBrowser1() { 
     // this intent is used to open other activity which contains another 
     // webView 
     Intent intent = new Intent(contactActivity.this, fbtwitterfeedActivity.class); 
     startActivity(intent); 
    } 

    private void openBrowser2() { 
     // TODO Auto-generated method stub 
     Intent intent1 = new Intent(contactActivity.this, twitterfeedActivity.class); 
     startActivity(intent1); 
    } 

} 
相关问题