@Params(fields = { @Field(name = "password",type = String.class) }) public class SubActivity extends ParentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SubActivityArgsData data = SubActivityArgsData.getArguments(getIntent()); password.setText(data.getPassword()); } }
@Params public class EmptyActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } }
private TypeName getClzType (Field field) { TypeName typeName; try { Class<?> clazz = field.type(); typeName = TypeName.get(clazz); } catch (MirroredTypeException mte) { typeName = TypeName.get(mte.getTypeMirror()); } return typeName; }
private List<FieldData> parseField(TypeElement element) { List<FieldData> fieldList = new ArrayList<>(); Params annotation = element.getAnnotation(Params.class); if (annotation == null) { return fieldList; } Field[] fields = annotation.fields(); for (int i = 0; i < (fields == null ? 0 : fields.length); i++) { Field field = fields[i]; FieldData data = new FieldData(); data.setDoc(field.doc()); data.setName(field.name()); data.setType(getClzType(field)); data.setFieldType(field.fieldType()); data.setDefValue(field.defValue()); fieldList.add(data); } return fieldList; }
TypeName getTypeName(FieldType parent,TypeName child) { if (parent.equals(FieldType.array)) { return getTypeName(child.toString() + "[]"); } else if (parent.equals(FieldType.list)) { return getTypeName(List.class.getCanonicalName() + "<" + child.toString() + ">"); } else if (parent.equals(FieldType.set)) { return getTypeName(Set.class.getCanonicalName() + "<" + child.toString() + ">"); } else { return child; } }
private List<FieldData> parseParentField() { List<FieldData> parentFieldList = new ArrayList<>(); TypeMirror superTM = element.getSuperclass(); TypeElement curElement; do { curElement = (TypeElement) UtilMgr.getMgr().getTypeUtils().asElement(superTM); if (curElement == null) { return parentFieldList; } Params params = curElement.getAnnotation(Params.class); if (params != null && !params.inherited() && !checkIsSubClass(ACT_NAME)) { break; } List<FieldData> parentList = parseField(curElement); if (parentList.size() > 0 && parentElement == null) { parentElement = curElement; } parentFieldList.addAll(parentList); superTM = curElement.getSuperclass(); }while (superTM != null); return parentFieldList; }
/** * @author Administrator */ @Params(fields = { @Field(name = "password", type = String.class, doc = "用户密码") }) public class SubFragment extends TestFragment { public static final String TAG = SubFragment.class.getCanonicalName(); SubFragmentArgsData requestData; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestData = SubFragmentArgsData.getArguments(this); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); password.setText(requestData.getPassword()); } }
@Params(fields = { @Field(name = "admin", type = User.class), @Field(name = "listUser", type = User.class, fieldType = FieldType.list), @Field(name = "arrayUser", type = User.class, fieldType = FieldType.array), @Field(name = "setUser", type = User.class, fieldType = FieldType.set) }) public class MultiTypeActivity extends Activity { @Bind(R.id.userInfos) TextView userInfos; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_multi_type); ButterKnife.bind(this); MultiTypeActivityArgsData arguments = MultiTypeActivityArgsData.getArguments(getIntent()); StringBuffer buffer = new StringBuffer(); buffer.append("admin:" + arguments.getAdmin()) .append("\n") .append("listUser:" + arguments.getListUser()) .append("\n") .append("arrsyUser:" + Arrays.toString(arguments.getArrayUser())); userInfos.setText(buffer.toString()); } }
@Params(fields = { @Field(name = "username", type = String.class) }) public class ParentActivity extends Activity { @Bind(R.id.username) Button username; @Bind(R.id.password) Button password; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_parent); ButterKnife.bind(this); ParentActivityArgsData data = ParentActivityArgsData.getArguments(getIntent()); username.setText(data.getUsername()); } }
@Params(fields = { @Field(name = "username",type = String.class,doc = "用户名",defValue = "admin"), @Field(name = "password",type = String.class,doc = "密码"), }) public class ParamsActivity extends Activity { @Bind(R.id.username) TextView username; @Bind(R.id.password) TextView password; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_params); ButterKnife.bind(this); // 获取传参 ParamsActivityArgsData data = ParamsActivityArgsData.getArguments(getIntent()); username.setText(data.getUsername()); password.setText(data.getPassword()); } }