안드로이드 용 Kotlin 또는 Kotlin의 조각 밖에서 인터페이스를 인스턴스화 할 수 없습니다. 그것은 자바 표준 절차가 말을이었다 같은 : mInterfaceListener 어떻게 인터페이스는 코 틀린 인스턴스화되는Kotlin에서 인터페이스 리스너 인스턴스화하기
같은 인터페이스가 아닌 OnClickListener를 또는 아무것도를 참조한다
MyInterface mInterfaceListener = new MyInterface(this);
mInterfaceListener.invokeSomeGenericMethod();
주? "청취자"를 만들고 인터페이스 기능을 트리거하려면 어떻게합니까?
다음은 학습 목적으로하는 매우 간단한 앱의 몇 가지 시도입니다. 페스에게있는 변수 mPresenterListener에 주목
class QuoteActivity : QuoteContract.ViewOps, AppCompatActivity() {
private lateinit var vText: TextView
private lateinit var vFab: FloatingActionButton
private lateinit var mPresenterListener: QuoteContract.PresenterOperations
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mPresenterListener = this.mPresenterListener
vText=findViewById(R.id.main_quote)
vFab=findViewById(R.id.main_fab)
vFab.setOnClickListener{
mPresenterListener.onQuoteRequested()
}
}
override fun displayQuote(quote: String) {
vText.text = quote
}
}
그리고 내 발표자 :
class QuotePresenter(private val viewListener: QuoteContract.ViewOps): QuoteContract.PresenterOperations {
private lateinit var modelListener: QuoteContract.ModelOperations
init {
modelListener = this.modelListener
}
override fun onQuoteRequested() {
modelListener.generateQuote()
}
override fun onQuoteGenerated(quote: String) {
viewListener.displayQuote(quote)
}
}
인터페이스 :
interface QuoteContract {
//Methods available to Presenter (Presenter -> View)
interface ViewOps{
fun displayQuote(quote: String)
}
//Ops offered from presenter to view (Presenter->View)
interface PresenterOperations {
//Presenter->View
fun onQuoteRequested()
//Presenter->Model
fun onQuoteGenerated(quote: String)
}
//Ops offered from Model to Presenter (Model -> Presenter)
interface ModelOperations {
fun generateQuote()
}
}
이것은 인터페이스 나 리스너와 관련이 있습니까? 아니면 일반적으로 객체를 만드는 방법을 묻고 있습니까? – chris
'setOnClickListener' 내부에 인터페이스를 구현하고 있습니다.'new View.OnClickListener' –
'mPresenterListener = this.mPresenterListener'와'modelListener = this.modelListener'가 필요하기 때문입니다. 왜 사용 자체가 변수를 할당합니까? – Joshua