jude95 / beam Goto Github PK
View Code? Open in Web Editor NEWMVP开发框架
MVP开发框架
我的工程中用了混淆,
-keep class com.jude.beam.* { ; }
-dontwarn com.jude.beam.
签名apk运行时
Caused by: java.lang.InstantiationException: class com.jzg.taozhubao.module.MactivityPresenter has no zero argument constructor,异常,我在里面手动加上空参构造方法,还是报一样错误。大神要有没有好的处理方法,activityPrenster,fragmentpresenter,adapterPresenter也会报同样的错误!请大神指教,谢谢
Activity中使用BeamListFragment,程序压入后台(如按home键,用360卫士清理内存),再恢复时,会报空指针。
原因可能是:
压入后台, Fragment可能会系统回收了,Presenter中的view=null了。再恢复时,没有走Fragment的onCreate方法,只走了onCreateView ,
这时在onCreateView 中执行:
if (mListConfig.mStartWithProgress&&!getPresenter().inited) mListView.setAdapterWithProgress(mAdapter = getPresenter().getAdapter());
else mListView.setAdapter(mAdapter = getPresenter().getAdapter());
DataAdapter引用的getview就空指针异常了。
只有jcenter库才有?
在activity 或者 fragment 回收的时候可以考虑把p 层持有的 activity引用 置null
BaseViewHolder 继承这个类,在这里更新某个item的界面,滑动listview的时候item的界面错乱了!这个问题怎么解决啊?
getView().banner_text.setPages(
new CBViewHolderCreator() {
@OverRide
public TextHolderView createHolder() {
return new TextHolderView();
}
}, getView().notice_list);
类似这种结构的会出错。如果将该方法放在view中则不会出错
错误log:Attempt to invoke virtual method 'com.bigkoo.convenientbanner.ConvenientBanner com.bigkoo.convenientbanner.ConvenientBanner.setPages(com.bigkoo.convenientbanner.holder.CBViewHolderCreator, java.util.List)' on a null object reference
今天使用beam项目,发现retrofit 2.0用这个版本的会有问题
看你的介绍说是参考了nucleus,能在wiki里面简单描述下与nucleus的异同,以及优势在哪吗?
Fragment没法调用显示progressBar和Error等。只有Activity中才可以。我感觉Fragment中加载数据进行进度显示等也是很必要的啊。求BeamFragment中加上ViewExpansionDelegate。
亲 请rxandroid 升级一下了。现在都是2,x
在BeamBaseActivity
中有获取根视图的方法
mContentParent= (FrameLayout) findViewById(android.R.id.content);
但android.R.id.content
对应的组件应该是LinearLayout
吧,而且在后续的代码中也未用到FrameLayout
的特性.能否用ViewGroup
或LinearLayout
代替呢
我看代码里是在activity的onDestroy生命周期时,进行了移除presenter的操作。那怎么保证在activity意外重建时(比如旋转屏幕),presenter不重建呢。
你好,Jude95 好久不见, miss u fine.
我知道 ActivityLifeCycleDelegate 定义了activity大部分相关的生命周期方法
我们在使用类似统计等相关的3rd-SDK时,只需要继承这个ActivityLifeCycleDelegate 类,
在onResume onPause相关的生命周期方法中操作即可。类似代码如下:
public class ActivityDelegate extends ActivityLifeCycleDelegate {
public ActivityDelegate(Activity act) {
super(act);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
JActivityManager.getInstance().pushActivity(getActivity());
}
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(getActivity());
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(getActivity());
}
@Override
protected void onDestroy() {
super.onDestroy();
JActivityManager.getInstance().popActivity(getActivity());
}
}
但是,一些第三方的SDK,可能在Activity使用比较少的方法中进行使用。比如在使用bugtags的SDK时,需要在dispatchTouchEvent实现方法中做处理。代码如下所示:
public class BaseActivity extends Activity{
@Override
protected void onResume() {
super.onResume();
//注:回调 1
Bugtags.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
//注:回调 2
Bugtags.onPause(this);
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
//注:回调 3
Bugtags.onDispatchTouchEvent(this, event);
return super.dispatchTouchEvent(event);
}
}
对于这样的场景应用,当前的beam框架有什么好的实现处理方式么?
期待你的回复, 3ks.
Error:Unable to find method 'org.gradle.api.internal.project.ProjectInternal.getConfigurations()Lorg/gradle/api/internal/artifacts/configurations/ConfigurationContainerInternal;'.
Possible causes for this unexpected error include:
Re-download dependencies and sync project (requires network)
The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
Stop Gradle build processes (requires restart)
In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.
Android Studio 2.3 Beta 1
报错如下:
java.lang.NoSuchFieldError: ViewBackgroundHelper
at android.support.v7.widget.AppCompatBackgroundHelper.loadFromAttributes(AppCompatBackgroundHelper.java:46)
at android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:63)
at android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:56)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:441)
at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:240)
at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:195)
at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadClass(LayoutlibCallbackImpl.java:193)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:333)
at android.view.BridgeInflater.onCreateView(BridgeInflater.java:152)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:717)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:785)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:222)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:858)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at com.android.layoutlib.bridge.bars.CustomBar.(CustomBar.java:95)
at com.android.layoutlib.bridge.bars.NavigationBar.(NavigationBar.java:52)
at com.android.layoutlib.bridge.bars.NavigationBar.(NavigationBar.java:46)
at com.android.layoutlib.bridge.impl.Layout.createNavBar(Layout.java:284)
at com.android.layoutlib.bridge.impl.Layout.(Layout.java:140)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:301)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:368)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:567)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:549)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:863)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:549)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$1(RenderTask.java:680)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
可以封装一个LazyFragment。
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.