2016-11-27 2 views
0

Я использовал код belove для изменения экрана приложения. Нажимая кнопку.Как добавить еще одну функцию для изменения кнопки экрана?

Button button; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    addListenerOnButton(); 


} 


public void addListenerOnButton() { 

    final Context context = this; 

    button = (Button) findViewById(R.id.button1); 

    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent intent = new Intent(context, App2Activity.class); 
      startActivity(intent); 

     } 

    }); 

} 

Я хочу добавить еще одну функцию к той же кнопке, чтобы отправить sms программно. Я меняю код выше, как этот. Но он не работает.

Button button; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    addListenerOnButton(); 


} 


public void addListenerOnButton() { 

    final Context context = this; 

    button = (Button) findViewById(R.id.button1); 

    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent intent = new Intent(context, App2Activity.class); 
      startActivity(intent); 

     } 

    }); 

} 


protected void onCreate1(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


     findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      sendSMS(); 
     } 
    }); 

    } 
private void sendSMS() 
{ 

    try { 
SmsManager sms = SmsManager.getDefault(); 
ArrayList<String> smsString = sms.divideMessage("XXXX"); 
sms.sendMultipartTextMessage("XXXXX", null, smsString, null, null); 
Toast.makeText(getBaseContext(), "SMS Sent..", Toast.LENGTH_SHORT).show(); 
    } 

    catch(Exception exp){ 
Toast.makeText(getBaseContext(), "SMS sending failed...",Toast.LENGTH_SHORT).show(); 
        } 

} 

любой может помочь мне решить эту проблему.? Я хочу добавить оба аукциона на ту же кнопку, чтобы работать в то же время

ответ

0

Кнопка имеет только один кликлайнер. Внутри этого кода вы кодируете две функции.

Button button; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    addListenerOnButton(); 
} 

public void addListenerOnButton() { 
    final Context context = this; 

    button = (Button) findViewById(R.id.button1); 

    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      sendSMS(); 
      Intent intent = new Intent(context, App2Activity.class); 
      startActivity(intent); 
     } 
    }); 
} 

Если вы хотите сделать это, поместите функцию sendSMS() в поток.

0

Вы не звонили onCreate1 в любом месте, поэтому код внутри него никогда не будет запущен. Вот почему второй слушатель никогда не добавляется. Даже если он вызывается, кнопка может иметь только один прослушиватель. Вы можете позвонить по телефону sendSMS после или перед началом работы:

button.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     Intent intent = new Intent(context, App2Activity.class); 
     startActivity(intent); 
     sendSMS(); // here! 
    } 

});