اندروید: هندل کردن کلیک روی View

معرفی hendler در xml

<Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="clicked"
            android:text="@string/click"/>

و تعریف متد در java

public void clicked(View view) {
    Log.d(TAG, "Clickec: "+view.toString());
    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
    startActivity(intent);
}

هندل کردن در Java

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ....
        Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(this);

        Button button2 = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(this);
        ....
    }    
    ...
    @Override
    public void onClick(View v) {
        Log.d(TAG, String.valueOf(v.getId()));
        switch (v.getId()) {
            case R.id.button1:
                Log.d(TAG, "Button 1");
                Button button2 = (Button) findViewById(R.id.button2);
                button2.setText("Salam");
                break;
            case R.id.button2:
                Log.d(TAG, "Button 2");
                break;
        }
    }
    ...
}

در کد بالا پارامتر setOnClickListener کلاسی است که View.OnClickListener را پیاده سازی کرده است. در مثال فوق همین Activity این کار را کرده است. در حالات پیچیده تر بهتر است کلاس های مجزایی برای هندل کردن کلیک ایجاد داشته باشیم.

در این حالت button ها باید در فایل layout دارای id باشند

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/click"
            android:id="@+id/button1"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button two"
            android:id="@+id/button2"/>
برچسب ها: 
درخت مرجع: 

افزودن نظر جدید