package com.hannesdorfmann.fragmentargs.annotation;
import com.hannesdorfmann.fragmentargs.bundler.ArgsBundler;
import com.hannesdorfmann.fragmentargs.bundler.NoneArgsBundler;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Annotated every field that should be a fragment argument with this annotation
*
* @author Hannes Dorfmann
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.CLASS)
@Documented
public @interface Arg {
/**
* Specifies if the argument is required (default) or not
*
* @return true if required, false otherwise
*/
boolean required() default true;
/**
* Key in the arguments bundle, by default uses the field name, minus the "m" prefix.
*/
String key() default "";
/**
* You can specify the {@link ArgsBundler} class that should be used to put the annotated Arg into
* the bundle and read from it.
*
* @return The Args Bundler class
* @since 2.1
*/
Class<? extends ArgsBundler> bundler() default NoneArgsBundler.class;
}