+4

[Tip Android] Khai báo layout dễ dàng với Annotation

Làm sao để khai báo layout một cách đơn giản, nhanh chóng thế này

@LayoutId(R.layout.activity_main)
public class MainActivity extends BaseActivity {
}

or Kotlin

@LayoutId(R.layout.activity_main)
class MainActivity : BaseActivity() {
}

Cách làm: 1.Khởi tạo annotation

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface LayoutId { int value();}

or Kotlin

@Target(AnnotationTarget.CLASS, AnnotationTarget.FILE)
@Retention(AnnotationRetention.RUNTIME)
annotation class LayoutId(val value: Int)
  1. Định nghĩa annotation ở hàm Base
public abstract class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LayoutId layoutId = getClass().getAnnotation(LayoutId.class);
        if (layoutId != null) {
            int contentViewId = layoutId.value();
            setContentView(contentViewId);
        }
    }
}

or Kotlin

abstract class BaseActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val layoutId = javaClass.getAnnotation(LayoutId::class.java)
        val contentViewId = layoutId?.value
        setContentView(contentViewId!!)
    }
}

Thế là xong! Cám ơn bạn đã đọc


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.