Skip to content

Roy2828/parameter_transfer

Repository files navigation

parameter_transfer

fragment activity携带参数注解解析库

使用 添加依赖库

 repositories { 
        maven { url "https://jitpack.io" }
    }
    
 implementation 'com.github.Roy2828:parameter_transfer:0.1.2'

 kapt 'com.github.Roy2828.parameter_transfer:compiler:0.1.2'
依赖报错
如:Annotation processors must be explicitly declared now(现在必须显式声明注释处理器。)

解决:
 javaCompileOptions {
            // Explicit declarations support annotations 
            annotationProcessorOptions {
                includeCompileClasspath true
            }
        }

例子: public class MainActivity2 extends AppCompatActivity {

@ArgumentsField(value = "bb")
public String name;
@ArgumentsField(value = "ss")
public String names;
@ArgumentsField
public int age;

@ArgumentsField(isSerialize = SerializeMode.Serializable)
public Bean bean;
@ArgumentsField(value = "parcelable",isSerialize =  SerializeMode.Parcelable)
public ParcelableBean parcelableBean;

public static void launch(Context context,String bb,String ss,int age,Bean bean,ParcelableBean parcelable){
    Intent intent = new Intent(context,MainActivity2.class);
    intent.putExtra("bb",bb);
    intent.putExtra("ss",ss);
    intent.putExtra("age",age);
    intent.putExtra("bean",bean);
    intent.putExtra("parcelable",parcelable);
    context.startActivity(intent);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    ParameterManager.getParameterManager().inject(this); 
}

}

代码生成:
 public class MainActivity2$$$$$$Arguments implements ArgumentsApi {
  @Override
  public void inject(Object object) {
    if(object==null) {
      return;
    }
    MainActivity2 activity = (MainActivity2)object;
    assignment(activity,BundleUtils$$$$$$.getBundle(object));
  }

  

  public void assignment(MainActivity2 activity, Bundle bundle) {
    if(bundle !=null) {
      activity.name = bundle.getString("bb");
      activity.names = bundle.getString("ss");
      activity.age = bundle.getInt("age");
      activity.bean = (com.roy.parameter_transfer.Bean)bundle.getSerializable("bean");
      activity.parcelableBean = (com.roy.parameter_transfer.ParcelableBean)bundle.getParcelable("parcelable");
    }
  }
}


public class BundleUtils$$$$$$ {
  public static Bundle getBundle(Object object) {
    Bundle bundle = null;
    if(object instanceof FragmentActivity) {
      Intent intent = ((FragmentActivity)object).getIntent();
      if(intent !=null) {
         bundle = intent.getExtras();
      }
    }
    else if(object instanceof Fragment) {
       bundle = ((Fragment)object).getArguments();
    }
    return bundle;
  }
}

About

fragment activity携带参数注解解析库

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published