переопределить onCreateAnimation FATAL EXCEPTION для java.lang.IllegalStateException: не должно быть нулевым - PullRequest
0 голосов
/ 09 декабря 2018

Я переопределил метод onCreateAnimation класса Fragment с реализацией по умолчанию, и это приводит к ИСТОЧНОМУ ИСКЛЮЧЕНИЮ.Почему?

java.lang.RuntimeException: не удается запустить действие ComponentInfo {com.developer.pocviewmodel / com.developer.pocviewmodel.MainActivity}: java.lang.IllegalStateException: super.onCreateAnimation (транзит,enter, nextAnim) не должен быть нулевым

class MainFragment : Fragment() {

    companion object {
        fun newInstance() = MainFragment()
    }

    private lateinit var viewModel: MainViewModel

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        return inflater.inflate(R.layout.main_fragment, container, false)
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
        // TODO: Use the ViewModel
    }

     override fun onCreateAnimation(transit: Int, enter: Boolean, nextAnim: Int): Animation {
        return super.onCreateAnimation(transit, enter, nextAnim)
    }

}

1 Ответ

0 голосов
/ 09 декабря 2018

java.lang.IllegalStateException : must not be null генерируется, когда параметр или переменная @NotNull имеет значение null или если функция @NotNull возвращает значение NULL.onCreateAnimation возвращает ноль по умолчанию.

Если вы декомпилируете свой класс, вы увидите Java-версию функции:

@NotNull
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
   Animation var10000 = super.onCreateAnimation(transit, enter, nextAnim);
   Intrinsics.checkExpressionValueIsNotNull(var10000, "super.onCreateAnimation(transit, enter, nextAnim)");
   return var10000;
}

onCreateAnimation возвращает ноль и, следовательно, выдает исключениепотому что возвращаемое значение помечено как @NotNull.Либо переопределите метод и верните ненулевое значение, либо измените тип возвращаемого значения на Animation?.Но так как вы ничего не делаете с этим, вы можете удалить его полностью.Вам не нужно переопределять его, это не абстрактно.

Для записи это декомпилированный код Java, если вы сделаете возвращаемый тип обнуляемым:

@Nullable
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
   return super.onCreateAnimation(transit, enter, nextAnim);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...