250x250
01-18 16:15
관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[안드로이드] 에러 해결 error: cannot find symbolpublic final class SignUpFragment extends BaseFragment<com.mtjin.bungsegwon.databinding.FragmentSignUpBinding> { symbol: class BaseFragment 본문

안드로이드/코틀린 & 아키텍처 & Recent

[안드로이드] 에러 해결 error: cannot find symbolpublic final class SignUpFragment extends BaseFragment<com.mtjin.bungsegwon.databinding.FragmentSignUpBinding> { symbol: class BaseFragment

프로그래밍막내 2021. 11. 27. 19:00
300x250
SMALL

 

 

 

 

 

 

[에러 사항]

안드로이드 런타임때

error: cannot find symbolpublic final class SignUpFragment extends BaseFragment<com.mtjin.bungsegwon.databinding.FragmentSignUpBinding> { symbol: class BaseFragment

라는 에러가 발생했습니다. 

 

 

 

[에러 원인]

package com.mtjin.bungsegwon.views.signup;

import java.lang.System;

@kotlin.Metadata(mv = {1, 4, 1}, bv = {1, 0, 3}, k = 1, d1 = {"\u0000\u0016\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\u0018\u00002\b\u0012\u0004\u0012\u00020\u00020\u0001B\u0005\u00a2\u0006\u0002\u0010\u0003J\b\u0010\u0004\u001a\u00020\u0005H\u0016\u00a8\u0006\u0006"}, d2 = {"Lcom/mtjin/bungsegwon/views/signup/SignUpFragment;", "LBaseFragment;", "Lcom/mtjin/bungsegwon/databinding/FragmentSignUpBinding;", "()V", "init", "", "app_debug"})
public final class SignUpFragment extends BaseFragment<com.mtjin.bungsegwon.databinding.FragmentSignUpBinding> {
    
    @java.lang.Override()
    public void init() {
    }
    
    public SignUpFragment() {
        super(0);
    }
}

에러로그를 보면 LoginFrament 에서 에러났고

  • cannot find symbol class BaseFragment 

로 BaseFragment를 못찾는 문제라는 것을 알 수 있습니다.

 

추가로 

Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
   > java.lang.reflect.InvocationTargetException (no error message)

에러도 추가로 발생한 것도 볼 수 있습니다.

 

 

 

[에러 해결]

BaseFragment를 못찾는 문제 같으므로 BaseFragment를 들여다보았습니다.


import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.annotation.LayoutRes
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.fragment.app.Fragment
import io.reactivex.rxjava3.disposables.CompositeDisposable

abstract class BaseFragment<B : ViewDataBinding>(
    @LayoutRes val layoutId: Int
) : Fragment() {
    lateinit var binding: B
    protected lateinit var thisContext: Context
    protected val compositeDisposable = CompositeDisposable()

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = DataBindingUtil.inflate(inflater, layoutId, container, false)
        thisContext = inflater.context
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding.lifecycleOwner = this
        init()
    }

    abstract fun init()
    override fun onDestroy() {
        super.onDestroy()
        compositeDisposable.dispose()
    }

    protected fun showToast(msg: String) =
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show()
}

가장 상단에 Pacakage가 추가되어 있지 않아서 경로를 인지하지 못하여 SignUpFragment에서 import가 잘못되어 생긴 문제였습니다.

 

경로에 맞게 추가해주었더니 해결되었습니다.

 

 

 

 

 

댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!

 

 

 

300x250
LIST
2 Comments
댓글쓰기 폼