SORU
16 HAZİRAN 2011, PERŞEMBE


En iyi uygulama android düğme olayları tanımlamak için

Buttonbirkaç s oluşan Layout bir XML olarak tanımlıyorum.

Şu anda olay düğmelerini karşı işleyicileri tanımlama OnCreate yöntemi yapıyorum:

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

    Button newPicButton = (Button)findViewById(R.id.new_button);
    newPicButton.setOnClickListener(btnListener);
    ..... similarly for other buttons too
    .....
}

İçinde ButtononClick olay, bir fırlatma makinesi Intent bir resim ve içinde onActivityResult geri arama ben tekrar ayar olay işleyicileri ile birlikte ayar View: bunun gibi

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    setContentView(R.layout.main);
    Button newPicButton = (Button)findViewById(R.id.new_button);
    newPicButton.setOnClickListener(btnListener);
    ...similarly for other buttons too
}

Android için yeni ve bir olay her zaman yeniden tanımlayarak bu yaklaşım bana oldukça kirli görünüyor. Bu gibi senaryolarda düğme olay işleyicileri tanımlama açısından en iyi yöntem olduğunu bilmek istiyorum.

Edit: yapıştırma tam benim sınıf

public class CameraAppActivity extends Activity 
{
    /** Called when the activity is first created. */

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

        Button newPicButton = (Button)findViewById(R.id.new_button);
        newPicButton.setOnClickListener(btnListener);
    }

    //---create an anonymous class to act as a button click listener---
    private OnClickListener btnListener = new OnClickListener()
    {

        public void onClick(View v)
        {   
             //Intent newPicIntent = new Intent(v.getContext(), NewPictureActivity.class);
             //startActivityForResult(newPicIntent, 0);
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, 999);
        } 

    };  

    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {  

        setContentView(R.layout.main);
        Button newPicButton = (Button)findViewById(R.id.new_button);
        newPicButton.setOnClickListener(btnListener);

       //if I comment last two lines nothing happens when I click on button

    }  

Ana soru

setContentView(R.layout.main);
Button newPicButton = (Button)findViewById(R.id.new_button);
newPicButton.setOnClickListener(btnListener);

Yeniden kayıt içinde 18*.. *bu yaklaşım doğru mu olaylar? Ya da yanlış bir şey mi yapıyorum? Eğer umurumda olsaydı zaten yeniden Kayıt düğmesine tıkladığınızda hiçbir şey olmuyor olay çünkü.

CEVAP
16 HAZİRAN 2011, PERŞEMBE


Neden XML düzeni özelliği olay kaydı ve kodu hallet o zaman. Bu, bunu nasıl yapacağını

<Button
android:id="@ id/my_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me"
android:onClick="onBtnClicked">
</Button>

ve şimdi tıklama idare edecek bir yöntem oluşturun

public void onBtnClicked(View v){
    if(v.getId() == R.id.my_btn){
        //handle the click here
    }
}

Alternatif olarak, tek tek OnClickListener kodu her kalem için ayarlayabilirsiniz. Sonra/eğer başka bir kullanımı veya tabloların kaynağını belirlemek için anahtarı.

Bu şekilde bir düzen tüm düğmeleri işleyen bir yöntem olabilir.

GÜNCELLEME:Bu geçerli bir yaklaşım olsa da güçlü bir şekilde ikinci seçeneği tavsiye ederim. Özellikle parçaları ile çalışırken, daha temiz ve daha kolay korumak için.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kanál používateľa McsFuego

    Kanál použ

    12 EKİM 2011
  • TomSka

    TomSka

    30 Mayıs 2006
  • waterfairy17

    waterfairy17

    9 Aralık 2007