मैं BaseFragment
है। उदाहरण MainFragment
के लिए:जेनेरिक प्रकार और बहुरूपता
public class MainFragment extends BaseFragment implements MainMvpView {
MainPresenter<MainMvpView> presenter;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
syncLifeCycle(presenter);
//presenter.onCreate();
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//presenter.onAttachView(this);
}
@Override
public void onResume() {
super.onResume();
//presenter.onResume();
}
@Override
public void onPause() {
super.onPause();
//presenter.onPause();
}
@Override
public void onDestroyView() {
super.onDestroyView();
//presenter.onDetachView();
}
@Override
public void onDestroy() {
super.onDestroy();
//presenter.onDestroy();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//presenter.onActivityResult(requestCode, resultCode, data);
}
}
मैं प्रत्येक खंड और प्रस्तोता के जीवन चक्र तुल्यकालन कोड दोहरा बचना चाहते हैं। इसलिए मैं इस प्रक्रिया को BaseFragment
में कार्यान्वित करना चाहता हूं। जावा में यह लाइन presenter.onAttachView(this);
काम करती है लेकिन चेतावनी के साथ "अनचेक कॉल onAttachView(V)
" (मैं इसके साथ रह सकता हूं)। लेकिन Kotlin मैं वास्तव में कैसे सही ढंग से यह करने के लिए पर सलाह की जरूरत है मुझे सब
abstract class BaseFragmentKotlin : Fragment(), BaseMvpView {
private var presenter: BasePresenter<*>? = null
//...
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
presenter?.onAttachView(this) //Does not work. "Out-projected type 'BasePresenter<*>?' prohibits the use of 'public abstract fun onAttachView(mvpView: V!): Unit defined in com.example.test.BasePresenter"
}
//...
}
पर ऐसा करने की अनुमति नहीं देता है।
संपादित:
public class BasePresenterImpl<V extends BaseMvpView> implements BasePresenter<V> {
@Nullable
public V mvpView;
@Override
public void onCreate() {
}
@Override
public void onAttachView(V mvpView) {
this.mvpView = mvpView;
}
@Override
public void onResume() {
}
@Override
public void onPause() {
}
@Override
public void onDetachView() {
mvpView = null;
}
@Override
public void onDestroy() {
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
}
}
यहाँ पूरे परीक्षण कोड https://github.com/AlexNikolaTest/Test/tree/master/app/src/main/java/com/example/mytest
क्या आप प्रस्तुतकर्ता से 'onAttachView' विधि दिखा सकते हैं? – OsipXD