Life is a fucking movie. 😈 😈 😈 😈 😈 😈
人生如戏。
⚔️ A common architecture for Android applications developing based on MVP, integrates many open source projects, to make your developing quicker and easier (一个整合了大量主流开源项目高度可配置化的 Android MVP 快速集成框架).
License: Apache License 2.0
当有多个 baseUrl 时,怎么创建retrofit 好些呢? 看了架构源码,感觉不好处理。
还有个问题,没理解 Presenter 创建时,它依赖的对象是怎么创建的?希望指教下
这是Activity,直接返回布局 id 不好吗?
父类就可以直接
@Override
protected int initView() {
// return LayoutInflater.from(this).inflate(R.layout.activity_main, null, false);
return R.layout.activity_main;
}
我现在有一个MainFragment, 里面有很多操作, 有登录, 获取消息。而登录和获取消息分别对应两个Persenter, 登录Persenter里有三个接口, 获取消息Presenter里面有两个接口。
MainFragMent用到了登录Presenter里的一个接口, 用到了获取消息Presenter里面的一个接口。
我现在的做法是把消息Presenter里的那个接口写到了登录Presenter里面, 这样MainFragment就可以使用了,感觉不好,以后接口多了的话,不好玩,
第二种方法就是和上面一样,登录的写入消息Persenter
第三种就是新建一个Presenter, 包含公用的两个接口
感觉都不好啊
请问如何优雅的处理。
请问您遇到过吗?我测试了一上午了,,
只有一个TextView
@BindView(R.id.tv_hello)
Textview mTextView;
然后在 initData()
方法里设置内容 mTextView.setText("你好");`
就报 mTextView 空指针了,不用黄油刀,findViewbyId 正常。
也有说两者冲突,JakeWharton/butterknife#803
然而并。。没解决。。。
我的工程和你的项目对比了,都一样,,我的不行,你的完美运行,好尴尬,,,求破啊
/MVPArms-master/app/build/intermediates/res/resources-release-stripped.ap_'
specified for property 'resourceFile' does not exist.
👋
可以尝试
KLog: https://github.com/ZhaoKaiQiang/KLog
XLog: https://github.com/elvishew/xLog
至于Logger就不推荐了,上面两个足够,xLog还能保存到文件
BaseApplication中有如下方法:
`
public LinkedList mActivityList;
/**
* 返回一个存储所有存在的activity的列表
*
* @return
*/
public LinkedList getActivityList() {
if (mActivityList == null) {
mActivityList = new LinkedList();
}
return mActivityList;
}
`
在BaseActivity中有:
//如果intent包含了此字段,并且为true说明不加入到list // 默认为false,如果不需要管理(比如不需要在退出所有activity(killAll)时,退出此activity就在intent加此字段为true) boolean isNotAdd = getIntent().getBooleanExtra(IS_NOT_ADD_ACTIVITY_LIST, false);
个人觉得要实现退出所有activity保留单个activity,做法是保存activity的实例这个做法可能会导致内存泄露,应该有更好的办法解决,希望楼主提供。
请问一下dagger2支持最低系统版本是哪个版本呢?百度都没找到呢。还有MVPArms支持api是15+的,我能不能换掉涉及到15+的第三方库呢,因为我想兼容到14+,
可以扩展下网络请求吗?实现带进度条的上传和下载文件功能。
如标题
作者封装了defaultadapter,但是这可以用于item布局相同的列表,在item 布局不同的列表就没法在用defaultadapter,而现在的项目中很多都是多type的recylerview,希望作者考虑一下
Contract 里面为什么只有View和Model的接口,google 官方架构是View和Presenter.
是否应该考虑Contract内包含了 View,Model,Presenter3个接口的定义呢?
BaseApplication类下引用这个DaggerBaseComponent报错;WEApplication类下引用DaggerAppComponent报错。
Initializing...
Warning: AutoContentFrameLayout: can't find referenced method 'android.content.Context getContext()' in program class AutoContentFrameLayout
Warning: AutoContentFrameLayout: can't find referenced method 'boolean isInEditMode()' in program class AutoContentFrameLayout
Warning: okio.DeflaterSink: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning: okio.Okio: can't find referenced class java.nio.file.Files
Warning: okio.Okio: can't find referenced class java.nio.file.Files
Warning: okio.Okio: can't find referenced class java.nio.file.Files
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning: retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandles$Lookup
Warning: retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandles$Lookup
Warning: retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandle
Warning: retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandle
Warning: retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandles
Warning: retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandle
Warning: retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandles$Lookup
Warning: retrofit2.Platform$Java8: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning: rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentSequencedCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentSequencedCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentSequencedCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentSequencedCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.ConcurrentSequencedCircularArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.MpmcArrayQueueConsumerField: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.MpmcArrayQueueConsumerField: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.MpmcArrayQueueProducerField: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.MpmcArrayQueueProducerField: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.MpscLinkedQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.MpscLinkedQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpmcArrayQueueConsumerField: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpmcArrayQueueConsumerField: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpmcArrayQueueProducerField: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpmcArrayQueueProducerField: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpscArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpscArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpscArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpscUnboundedArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpscUnboundedArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpscUnboundedArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpscUnboundedArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpscUnboundedArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpscUnboundedArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpscUnboundedArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.SpscUnboundedArrayQueue: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.UnsafeAccess: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.UnsafeAccess: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.UnsafeAccess: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.UnsafeAccess: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.UnsafeAccess: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.UnsafeAccess: can't find referenced class sun.misc.Unsafe
Warning: rx.internal.util.unsafe.UnsafeAccess: can't find referenced class sun.misc.Unsafe
Note: com.app.mobile.base.utils.DeviceUtils: can't find dynamically referenced class com.android.internal.R$dimen
Note: com.app.mobile.base.utils.DeviceUtils: can't find dynamically referenced class com.android.internal.R$dimen
Note: com.google.gson.internal.UnsafeAllocator: can't find dynamically referenced class sun.misc.Unsafe
Note: okhttp3.internal.platform.AndroidPlatform: can't find dynamically referenced class com.android.org.conscrypt.SSLParametersImpl
Note: okhttp3.internal.platform.AndroidPlatform: can't find dynamically referenced class org.apache.harmony.xnet.provider.jsse.SSLParametersImpl
Note: okhttp3.internal.platform.Platform: can't find dynamically referenced class sun.security.ssl.SSLContextImpl
Note: retrofit2.Platform: can't find dynamically referenced class org.robovm.apple.foundation.NSObject
Note: retrofit2.Platform$IOS$MainThreadExecutor: can't find dynamically referenced class org.robovm.apple.foundation.NSOperationQueue
Note: com.app.mobile.base.utils.DeviceUtils accesses a field 'status_bar_height' dynamically
Note: com.app.mobile.base.utils.DeviceUtils accesses a field 'status_bar_height' dynamically
Note: com.google.gson.internal.UnsafeAllocator accesses a declared field 'theUnsafe' dynamically
Note: com.zhy.autolayout.attr.MinHeightAttr accesses a field 'mMinHeight' dynamically
Note: com.zhy.autolayout.attr.MinWidthAttr accesses a field 'mMinWidth' dynamically
Note: rx.internal.util.PlatformDependent accesses a field 'SDK_INT' dynamically
Maybe this is library field 'android.os.Build$VERSION { int SDK_INT; }'
Note: there were 8 unresolved dynamic references to classes or interfaces.
You should check if you need to specify additional program jars.
(http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass)
Note: there were 6 accesses to class members by means of introspection.
You should consider explicitly keeping the mentioned class members
(using '-keep' or '-keepclassmembers').
(http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember)
Warning: there were 66 unresolved references to classes or interfaces.
You may need to add missing library jars or update their versions.
If your code works fine without the missing classes, you can suppress
the warnings with '-dontwarn' options.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
Warning: there were 2 unresolved references to program class members.
Your input classes appear to be inconsistent.
You may need to recompile the code.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)
Warning: Exception while processing task java.io.IOException: Please correct the above warnings first.
:app:transformClassesAndResourcesWithProguardForRelease FAILED
Gradle: resolve dependencies ':arms:_debug_Compile'
少了这个可不太好哦!
Jess:
你好,一直停留在 Gradle:Download https://jitpack.io/com/github/VictorAlbertos/RxCache/......,请问怎么解决,谢谢!
MVPArt,同样的问题
感觉还不如直接new方便,而且让整个项目调用过程很模糊
您好,
关于json解析,请教一个问题,形如以下格式的json应该怎么解析?元素的key是变化的。万分感谢!
{
"127": {
"OSID": "127",
"name": "CentOS 6 x64",
"arch": "x64",
"family": "centos",
"windows": false
},
"148": {
"OSID": "148",
"name": "Ubuntu 12.04 i386",
"arch": "i386",
"family": "ubuntu",
"windows": false
}
}
是这样的,本来是直接compile 'me.jessyan:arms:1.2.4',功能什么的都可以用。功能非常强大。在使用过程中,希望将每个activity的状态栏设置为透明的。就需要修改BaseActivty中的布局和内容。所以就是直接引用的compile project(':arms')。这样引用之后,编译DaggerBaseComponent通不过。Error:(42, 9) 错误: 找不到符号
符号: 变量 DaggerBaseComponent
位置: 类 BaseApplication
我这有个登录接口
账号密码正确返回onResponse
密码错误返回到onFailure
但http的状态码都是200,不是应该都返回到onResponse吗?
我在com.jess.arms.di.component这个包下找不到DaggerBaseComponent这个类啊,但是在BaseApplication里用到了,是不是要自己写?还是忘了传了
在 Base 类里
mUnbind = ButterKnife.bind(this);
后 为什么在 子 Activity 中
@BindView(R.id.activity_main)
FrameLayout activityMain;
activityMain 会为空,很奇怪!会是什么问题
请教一个问题AdapterViewPager中为什么这么写呢,切换不做任何保存立即销毁?我们一般都不重写这些方法。
@OverRide
public Parcelable saveState() {
return null;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment f = (Fragment) super.instantiateItem(container, position);
View view = f.getView();
if (view != null)
container.addView(view);
return f;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View view = list.get(position).getView();
if (view != null)
container.removeView(view);
}
AndroidRuntime: FATAL EXCEPTION: main
Process: com.niule.hdd, PID: 2129
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.niule.hdd/com.niule.hdd.MainActivity}: java.lang.ClassCastException: com.niule.hdd.mvp.ui.fragment.HomeOneFragment cannot be cast to com.jess.arms.base.BaseActivity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2219)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5045)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: com.niule.hdd.mvp.ui.fragment.HomeOneFragment cannot be cast to com.jess.arms.base.BaseActivity
at com.niule.hdd.mvp.presenter.HomeOnePresenter.getBannerList(HomeOnePresenter.java:65)
at com.niule.hdd.mvp.ui.fragment.HomeOneFragment.initData(HomeOneFragment.java:97)
at com.jess.arms.base.BaseFragment.onActivityCreated(BaseFragment.java:46)
at com.niule.hdd.mvp.ui.fragment.HomeOneFragment.onActivityCreated(HomeOneFragment.java:102)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:2096)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:181)
at com.trello.rxlifecycle.components.support.RxAppCompatActivity.onStart(RxAppCompatActivity.java:50)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1188)
at android.app.Activity.performStart(Activity.java:5241)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2179)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5045)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
源码
public void getBannerList() {
//请求外部存储权限用于适配android6.0的权限管理机制
PermissionUtil.externalStorage(new PermissionUtil.RequestPermission() {
@Override
public void onRequestPermissionSuccess() {
//request permission success, do something.
}
}, mRxPermissions, mRootView, mErrorHandler);
mModel.getBannerList()
.subscribeOn(Schedulers.io())
.retryWhen(new RetryWithDelay(3, 2))//遇到错误时重试,第一个参数为重试几次,第二个参数为重试的间隔
.doOnSubscribe(new Action0() {
@Override
public void call() {
mRootView.showLoading();
}
}).subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(new Action0() {//**这里是引发错误的地方**
@Override
public void call() {
mRootView.hideLoading();//隐藏上拉刷新的进度条
}
})
.compose(((BaseActivity) mRootView).<BaseObject>bindToLifecycle())//使用RXlifecycle,使subscription和activity一起销毁
.subscribe(new ErrorHandleSubscriber<BaseObject>(mErrorHandler) {
@Override
public void onNext(BaseObject baseObject) {
if(baseObject.isSuccess()){
Log.d("HomeOnePresenter", baseObject.toString());
}else {
mRootView.showMessage(baseObject.getMessage().toString());
}
}
});
}
有这样一个契约, 获取服务器时间,不需要View
public interface TimeContract {
//Model层定义接口,外部只需关心model返回的数据,无需关心内部细节,及是否使用缓存
interface Model {
Observable<SvrTime> getServerTime();
}
}
当建立 TimePresenter时,继承BasePresenter
没有View,如何是好?
我的处理:
public interface TimeContract {
interface View extends IBaseView {
}
//Model层定义接口,外部只需关心model返回的数据,无需关心内部细节,及是否使用缓存
interface Model {
Observable<SvrTime> getServerTime();
}
}
BasePresenter<M>
可以看到,方法1多出无用的View, 方法2多了基类Presenter, 我还没测试方法2,请问还有没更好的方法
又踩了个坑,,
W/RequestIntercept.java: [ (RequestIntercept.java:96)#Intercept ] {
"GetSvrTimeResult": "20161122090413"
}
W/UserModel.java: [ (UserModel.java:37)#OnResponse ] 服务器时间: null
如上,拦截器收到服务器返回的json数据:
{
"GetSvrTimeResult": "20161122090413"
}
但是,OnResponse 或Rxjava处理的 onNext 都返回 null, 是什么情况呢?
这样,学习起来会更快了
太棒了 😄 👍 💯 😸
Guy , I want to give you green monkey
如果您对 MVPArms 和 JessYan 有什么好的建议, 都可以在下面留言以及讨论
Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties
File1: C:\Users\Administrator.gradle\caches\modules-2\files-2.1\io.reactivex.rxjava2\rxjava\2.0.7\21734c0092a5d3c3ec99510e50c1ff76bdf0c65a\rxjava-2.0.7.jar
File2: C:\Users\Administrator.gradle\caches\modules-2\files-2.1\io.reactivex\rxjava\1.2.7\138872ff3173fb7bee8b1d6303d6edb57d76599\rxjava-1.2.7.jar
其它依赖库中用的最新版本的Rxjava,项目运行报错了
大神,您最新的项目更新了,包的分类,为什么model包里还要有aPi和entity包,问什么不和model分开来处于同一级上。
还有一个问题请教,您说过,写新项目,最好直接在开源项目里写,那您的项目更新了,像这次归类到common里去,那我不是要原来项目全部重新复制、粘贴,复制、粘贴了吗?您有什么方法可以减少这种功夫消耗?
加载更多的时候 会闪一下,很明显
1、不懂混淆前务必注意将Java Bean,自定义组件添加进规则,什么意思。
2、Java Bean是你写的一个class,还是指我自己写的实体类?那我该怎么添加进规则。我混淆不怎么懂,请大神您多包涵。
Awesome project but could be great with an english wiki ^^
比如,我的数据是这样的格式:
public class BaseResponse {
private int code;
private String msg;
private T data;
}
,在amrs里怎么拦截,解析处理并自动封闭为entity啊?
楼主你的arms已经引入我们项目中,但是我一直有一个疑问,就是EventBus怎么用?,它的应用场景是什么?可否解答一下?
对网络请求是否可以封装一下
我有一些 信息是需要根据用户的输入操作来 完成初始化的,但目前看到的GlobeConfigModule的配置只能是在WEApplication中,请问,怎么在其他地方修改这个呢?
import com.jess.arms.di.component.DaggerBaseComponent
DaggerBaseComponent缺少
RT
MainActivity:
public class MainActivity extends BaseActivity {
@BindView(R.id.tv_hello)
TextView mTextView;
@Override
protected void ComponentInject() {
}
@Override
protected View initView() {
return LayoutInflater.from(this).inflate(R.layout.activity_main, null, false);
}
@Override
protected void initData() {
}
}
出现异常:
Caused by: android.view.InflateException: Binary XML file line #24: Error inflating class LinearLayout
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:3022)
at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:3085)
at com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1678)
at butterknife.ButterKnife.bind(ButterKnife.java:123)
at com.inst.instcallcar.base.BaseActivity.onCreate(BaseActivity.java:91)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.zhy.autolayout.config.AutoLayoutConifg.getMetaData(AutoLayoutConifg.java:98)
at com.zhy.autolayout.config.AutoLayoutConifg.init(AutoLayoutConifg.java:80)
at com.zhy.autolayout.utils.AutoLayoutHelper.initAutoLayoutConfig(AutoLayoutHelper.java:111)
at com.zhy.autolayout.utils.AutoLayoutHelper.(AutoLayoutHelper.java:103)
at com.zhy.autolayout.AutoLinearLayout.(AutoLinearLayout.java:18)
at com.inst.instcallcar.base.BaseActivity.onCreateView(BaseActivity.java:50)
at android.app.Activity.onCreateView(Activity.java:4744)
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:36)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:77)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:3022)
at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:3085)
at com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1678)
at butterknife.ButterKnife.bind(ButterKnife.java:123)
at com.inst.instcallcar.base.BaseActivity.onCreate(BaseActivity.java:91)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.