私はkotlinとkodeinの開発に新しいです。 何も拡張しない単純なクラスにデータを注入したいのですが。kodein、単純なクラスにデータを挿入
私は私の単純なクラスCallType
から関数を呼び出しKodeinSupportFragment()
拡張私のKodeinAppCompatActivity()
拡張MainActivity
、 私のフラグメントを持っています。しかし、この関数はブール値を他の単純なクラスConnectivitySate
から変更する必要があります。私は静的な値を使用したくありません。以下は
class App : Application(), KodeinAware {
override val kodein by Kodein.lazy {
import(autoAndroidModule([email protected]))
bind<CallType>() with instance(CallType())
bind<ConnectivityState>() with instance(ConnectivityState())
bind<ContactData>() with instance(ContactData())
}
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(androidActivityScope.lifecycleManager)
}
MainActivity:
class MainActivity : KodeinAppCompatActivity() {
マイ・フラグメント:
class JournalFragment : KodeinSupportFragment(){
private val callType: CallType by instance()
@SuppressLint("MissingSuperCall")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initializeInjector()
}
override fun onCreateView(inflater: LayoutInflater?, container:
ViewGroup?,savedInstanceState: Bundle?): View? {
// !! CALL MY FUNCTION !!
callType.call(callType.callNumber)
}
....
@SuppressLint("MissingSuperCall")
override fun onDestroy() {
super.onDestroy()
destroyInjector()
}
私の単純なクラス:
class CallType {
fun call(number: String) {
// !! I want to change gsmState value from ConnectivityState class
connectivityState.gsmState = true
}
マイConnectivityStateクラス:
class ConnectivityState {
var gsmState = false
}
状況の多くでは、私はそのようにブロックされていますので、それは、他の多くの中から一例です。私は物事の多くを試してきたが、私は常にエラーのように持っている:value not injected
はご返信いただき、誠にありがとうございます。..
Thakますが、私はcallType.call(callType.callNumber) 'を呼び出すとき、それは'動作するので、それは奇妙だが、私は変更しますそれ。私の問題はCallTypeクラスにあります。私はこのクラスに価値を入れたいと思っています。しかし、私はそれが何も拡張していないので、どのようにわからない。 – Halima
私は本当にブロックされています...あなたは何か考えがある場合。あなたの助けを差し上げます – Halima
コンストラクタで 'kodein'プロパティを渡してから、標準的な検索メソッドを使用できます:https://salomonbrys.github.io/Kodein/#_dependency_retrieval –