2013-06-11 3 views
0

Почему две кнопки изображения перестали работать после добавления кода для намерения электронной почты. Я играл с Public Void onCreate bundle, и когда я перемещаю этот раздел кода ниже, он снова работает. Я вложил их неправильно? Может ли кто-то его исправить?Почему две кнопки перестали работать?

My 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

, как вы были это реализовать, вы только зарегистрировали щелчки кнопки после того, как вы нажали на кнопку «отправить». Вы вызываете finish() в send onClick, чтобы слушатели никогда не регистрировались. Зарегистрируйте своих слушателей в onCreate, а затем прослушайте клики по определенному идентификатору вида в методе onClick. Я исправил свой код, чтобы вы зарегистрировать клик слушатель в нужное время и ваш метод 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, но я могу их закодировать, чтобы они появились в письме. Моя кнопка 'details 'работает, поскольку она выдает всплывающее окно для выбора электронной почты, но в сообщении я не могу получить дату имени телефона. Идентификатором моих входных feilds являются R.id.Nameinput, R.id.Phoneinput, R.id.dateinput ..... Флажки - это 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); 
    } 

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