Closed Koroqe closed 7 years ago
Интересно, а как вы предполагаете создастся экземпляр SplashPresenter, если он на вход себе ожидает некую SplashModel?
PS: если что, то у вас совсем другая ситуация, нежели в #49, раз вам не помогает такое решение, которое помогло в той ситуации ;)
Да, прошу прощения, код переписывался туда-обратно, сейчас конструктор без параметров:
`public SplashPresenter() {
mModel = new SplashModel();
}`
Но выбрасывает точно то же исключение
Можете привести весь ваш build.gradle? Если там нет ничего секьюрного конечно =)
PS: так же советую использовать последнюю версию библиотеки 1.4.5 и annotationProcessor вместо provided
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
//Crashlytics
maven {
url 'https://maven.fabric.io/public'
}
//Mockito
jcenter()
}
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.example.project"
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
jackOptions {
enabled true
}
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
//Crashlytics
compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
transitive = true;
}
// xml serialize\deserialize
compile('org.simpleframework:simple-xml:2.7.+') {
exclude module: 'stax'
exclude module: 'stax-api'
exclude module: 'xpp3'
}
compile 'com.android.support:support-v4:25.1.1'
//Espresso
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
}
compile 'com.android.support:appcompat-v7:25.1.1'
compile 'com.android.support:design:25.1.1'
//phone mask
compile 'ru.tinkoff.decoro:decoro:1.1.1'
//circle view
compile 'de.hdodenhof:circleimageview:2.1.0'
// Retrofit
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'com.squareup.retrofit2:converter-simplexml:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
//RxAndroid
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.2.5'
//rx bindings
compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
compile 'com.jakewharton.rxbinding:rxbinding-appcompat-v7:0.4.0'
//Gson
compile 'com.google.code.gson:gson:2.4'
// okhttp
compile 'com.squareup.okhttp3:okhttp:3.5.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'
//Quickblox
compile 'com.quickblox:quickblox-android-sdk-chat:3.3.0'
compile 'com.android.support:multidex:1.0.1'
//Firebase
compile 'com.google.firebase:firebase-core:10.0.1'
compile 'com.google.firebase:firebase-messaging:10.0.1'
//Multidex
compile 'com.android.support:multidex:1.0.1'
//Facebook
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
// Moxy
compile 'com.arello-mobile:moxy:1.1.2'
provided 'com.arello-mobile:moxy-compiler:1.1.2'
compile 'com.arello-mobile:moxy-app-compat:1.1.2'
//Mockito
testCompile 'org.mockito:mockito-core:2.0.57-beta'
//JUnit
testCompile 'junit:junit:4.12'
// Leakcanary
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
}
apply plugin: 'com.google.gms.google-services'
Похоже, мокси 1.1.2 была ещё совсем не совместима с джеком. Сейчас дела обстоят лучше, но всё равно всё плохо. Потому что он затирает часть сгенеренного кода, когда вы меняете часть проекта(а не билдите весь проект).
Поэтому советую:
provided 'com.arello-mobile:moxy-compiler:1.1.2'
на annotationProcessor 'com.arello-mobile:moxy-compiler:1.1.2'
Да, завелось с annotationProcessor и Clean Project. Спасибо за помощь, и вообще за такую крутую либу!
у меня тоже самое apply plugin: 'com.android.application' apply plugin: 'me.tatarka.retrolambda' apply plugin: 'realm-android'
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.johnaran.android.mobile.advert"
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
def support = '25.1.0' def retrofit = '2.1.0' def dagger = '2.7' def butterKnife = "8.4.0"
dependencies { compile "com.android.support:appcompat-v7:$support" compile "com.android.support:design:$support"
compile "com.jakewharton:butterknife:$butterKnife"
compile "com.squareup.retrofit2:retrofit:$retrofit"
compile "com.squareup.retrofit2:converter-gson:$retrofit"
compile "com.squareup.retrofit2:adapter-rxjava:$retrofit"
compile "com.google.dagger:dagger:$dagger"
annotationProcessor "com.jakewharton:butterknife-compiler:$butterKnife"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger"
testCompile 'junit:junit:4.12'
compile 'com.j256.ormlite:ormlite-core:4.48'
compile 'com.j256.ormlite:ormlite-android:4.48'
compile 'com.google.code.gson:gson:2.8.0'
compile 'com.squareup:otto:1.3.8'
compile 'io.reactivex:rxjava:1.1.0'
compile 'io.reactivex:rxandroid:1.1.0'
compile 'de.hdodenhof:circleimageview:2.1.0'
compile 'com.github.bumptech.glide:glide:3.8.0'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'io.realm:android-adapters:1.4.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.0'
compile 'com.squareup.retrofit2:converter-scalars:2.1.0'
compile 'com.android.support:gridlayout-v7:25.3.1'
compile 'com.arello-mobile:moxy:1.5.3'
compile 'com.arello-mobile:moxy-app-compat:1.5.3'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-all:1.10.19'
testCompile 'org.hamcrest:hamcrest-all:1.3'
testCompile 'org.robolectric:robolectric:3.1-rc1'
annotationProcessor 'com.arello-mobile:moxy-compiler:1.5.3'
provided 'org.glassfish:javax.annotation:10.0-b28'
} buildscript { dependencies { classpath "com.android.tools.build:gradle:2.3.3" classpath "io.realm:realm-gradle-plugin:3.4.0" classpath 'me.tatarka:gradle-retrolambda:3.2.5' } repositories { jcenter() mavenCentral() } } allprojects { repositories { jcenter() } }
У меня возникла похожая проблема и Телеграм канале мне очень помогли. Activity в которую инжектим Presenter должна быть унаследована от MvpAppCompatActivity
У меня тоже такое же проблема:
Presenter:
`
class LaunchPresenter : BasePresenter
private var mModel = LaunchModel()
override fun onFirstViewAttach() {
super.onFirstViewAttach()
launch()
}
private fun launch() {
if (mModel.isTokenEmpty())
viewState.openLoginPage()
if (getAllUserData()) {
if (mModel.isMenuEmpty()) {
viewState.showError(error(EmptyStackException()))
return
}
openMainPage()
}
}
View:
interface LaunchView :MvpView {
@StateStrategyType(SingleStateStrategy::class)
fun showHideProgress(isLoading:Boolean)
fun openLoginPage()
fun openDistribution()
fun openManufacture()
fun showLogOutDialog()
fun showError(@StringRes message: Int)
} Activity:
class LaunchActivity : MvpAppCompatActivity(), LaunchView {
@InjectPresenter internal lateinit var mLaunchPresenter: LaunchPresenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_launch)
initListeners()
}
override fun openLoginPage() {
val intent = Intent(this, LoginActivity::class.java)
startActivityForResult(intent, Constants.LOGIN_ACTIVITY_RESULT_CODE)
}
... ` Gradle :
apply plugin: 'kotlin-kapt'
dependency {
compile 'com.arello-mobile:moxy-app-compat:1.5.3'
kapt 'com.arello-mobile:moxy-compiler:1.5.3' }
Все проблема решена, там не поставлен @InjectViewState
Здравствуйте! Та же ситуация как и https://github.com/Arello-Mobile/Moxy/issues/49
Выбрасывает:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.project.presentation.presenter.splash.SplashPresenter.checkLoggedInAndNavigate()' on a null object reference
build.gradle:
View унаследованная от MvpVIew:
Presenter, от MvpPresenter:
И Activity:
Получается, не смотря на аннотацию, presenter не инициализируется и остается Null. Что-то упустил?