USER'S GUIDE SOURCE CODE SAMPLES CONTACT DONATE

With @OnClick and @OnLongClick annotations you can use your methods as android.view.View.OnClickListener and android.view.View.OnLongClickListener respectively. Also, no need to implement any interfaces:

public class SampleActivity extends BaseActivity {
    @OnClick
    void onClickSaveButton() {
    }

    @OnLongClick
    void onLongClickSaveButton() {
    }
}

As well as in case of @FindView, Androjeta composes the IDs by default:

<lowercased activity name> + "_" + <method name without prefix>

Where prefix is onClick or onLongClick respectively.

Note For sure there’s no reason to distrust this approach. In case of misspelling, the code won’t be compiled.

Clearly, for this example, both onClickSaveButton and onLongClickSaveButton are bound to a view by id R.id.sampleActivity_saveButton.

Note OnLongClick allows you to set method’s return type to void. In this case Androjeta will return true by default. Change it to boolean otherwise.

You can also define IDs explicitly:

@OnClick(R.id.sampleActivity_saveButton)
void onClickSaveButton() {
}

or

@OnClick(name = "sampleActivity_saveButton")
void onClickSaveButton() {
}

BaseActivity:

class BaseActivity extends Activity {
    @Override
    public void setContentView(int layoutResID) {
        super.setContentView(layoutResID);
        MetaHelper.applyOnClicks(this);
    }
}

MetaHelper

The helper method would be:

public static void applyOnClicks(Activity activity) {
    new OnClickController(metasitory, activity).addListeners();
}

How it works:

User's Guide:

Androjeta

Advanced

Stable version: 2.3
Available on Java 1.7+
Android Compatible
Fork me on GitHub