2017-11-01 15 views
7

Tôi đang sử dụng phát triển thành phần, trong mô-đun chung BaseActivity.kt và BaseFragment.kt của mình. Những vấn đề sau đây xảy ra khi các module khác kế thừa họkotlin 'onCreate' ghi đè không có gì

> D:\Android\OneDaily\module_main\src\main\java\com\boco\main\MainActivity.kt 
> Error:(7, 24) Unresolved reference: base 
> Error:(9, 22) Unresolved reference: BaseActivity 
> Error:(21, 5) 'onCreate' overrides nothing 
> Error:(17, 5) 'getLayoutRes' overrides nothing 
> Error:(22, 15) Unresolved reference: onCreate 
> Error:(27, 22) Unresolved reference: findViewById 
> Error:(42, 34) Unresolved reference: supportFragmentManager 
> D:\Android\OneDaily\module_main\src\main\java\com\boco\main\TimelineFragment.kt 
> Error:(7, 24) Unresolved reference: base 
> Error:(10, 5) 'getLayoutRes' overrides nothing 
> Error:(9, 26) Unresolved reference: BaseFragment 
> Error:(14, 5) 'onCreateView' overrides nothing 
> Error:(15, 22) Unresolved reference: onCreateView 

BaseActivity.kt:

abstract class BaseActivity : AppCompatActivity() { 
    init { 
     AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) 
    } 
    abstract fun getLayoutRes(): Int 
    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(getLayoutRes()) 
    } 
} 

MainActivity.kt

class MainActivity : BaseActivity() { 

    private lateinit var mBottomNav: BottomNavigationView 

    private var mFragment1 = TimelineFragment() as Fragment 
    private var mFragment2 = TimelineFragment() as Fragment 
    private var mFragment3 = TimelineFragment() as Fragment 

    override fun getLayoutRes(): Int { 
     return R.layout.activity_main 
    } 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 

    } 
} 
+0

sẽ giúp để xem mã của bạn. – alex

+0

hãy chia sẻ đoạn mã của bạn –

+0

Tôi đã thử mã đã cho của bạn với phiên bản ổn định Android Studio 3.0 và nó hoạt động tốt. bạn có sử dụng cùng một phiên bản khác của studio android không? –

Trả lời

17

Có vẻ như một số chức năng đã thay đổi trong bản cập nhật mới nhất, chỉ xóa '?' khỏi Bundle

Như thế này:

override fun onCreate(savedInstanceState: Bundle) { 
    super.onCreate(savedInstanceState) 
} 
+0

Phiên bản nào có thể xóa '?' – RootKit

+1

Ngoài ra, nếu bạn gặp lỗi tương tự nhưng trong một đoạn, hãy xóa '?' trong fragmentQuản lý: FragmentManager –

+0

Câu trả lời này nên được chọn làm câu trả lời hàng đầu. Giúp tôi ra! – romaneso

9

Nó có thể xảy ra cũng trong một lớp học Fragment: Tôi tìm thấy cùng một vấn đề đối với phương pháp onCreateView; để tránh điều đó, chỉ cần loại bỏ các ? từ tham số LayoutInflater,

Như thế này:

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? 
0

Cập nhật chức năng chữ ký hoặc trở lại compileSdk 27-26

Các vấn đề liên quan