Stack Overflow на русском Asked by Leonid Altshooler on December 14, 2021
я сделал приложение и использовал библиотеку moxy ,есть ошибка при компиляции.
error: A View method has no strategy! Add @StateStrategyType annotation to this method, or to the View interface. You can also specify default strategy via compiler option.
хотя в примере не нужно было устанавливать стратегии.
presentor
import com.leal.mydam.presentation.view.App.MainView;
import moxy.InjectViewState;
import moxy.MvpPresenter;
@InjectViewState
public class MainPresenter extends MvpPresenter<MainView> {
public MainPresenter(){
getViewState().att();
}
}
mvpView
package com.leal.mydam.presentation.view.App;
import moxy.MvpView;
import moxy.viewstate.strategy.StateStrategyType;
public interface MainView extends MvpView {
void att();
}
ui
package com.leal.mydam.ui.activity.App;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import com.leal.mydam.R;
import com.leal.mydam.presentation.view.App.MainView;
import com.leal.mydam.presentation.presenter.App.MainPresenter;
import moxy.MvpAppCompatActivity;
import moxy.presenter.InjectPresenter;
public class MainActivity extends MvpAppCompatActivity implements MainView {
public static final String TAG = "MainActivity";
@InjectPresenter
MainPresenter mMainPresenter;
public static Intent getIntent(final Context context) {
Intent intent = new Intent(context, MainActivity.class);
return intent;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void att() {
((TextView)findViewById(R.id.textView)).setText("attached");
}
}
Стратегии в новых версиях Moxy надо обязательно у каждого метода проставлять, о чём и указано в сообщении об ошибке.
Это относится, в т.ч. к переодпределённым методам, даже если в месте их объявления стратегия указана.
interface SomeInterface {
@StateStrategyType(AddToEndSingleStrategy::class)
fun someFun()
}
interface AnotherInterface: MvpView, SomeInterface {
override fun someFun() // выкинется ошибка, если не добавить аннотацию стратегии
}
Answered by ЮрийСПб on December 14, 2021
У вас указан импорт import moxy.viewstate.strategy.StateStrategyType;
в MainView,
но при этом ни у метода att() ни у всего интерфейса не стоит аннотации @StateStrategyType. Попробуйте добавить например такую аннотацию
public interface MainView extends MvpView {
@StateStrategyType(AddToEndSingleStrategy.class)
void att();
}
Answered by blind.falcon on December 14, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP