TransWikia.com

проект Moxy не компилируется

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");
    }
}

2 Answers

Стратегии в новых версиях 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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP