2017-10-16 19 views
0

私は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

はご返信いただき、誠にありがとうございます。..

答えて

0

をあなたはsuper.onCreate()を呼び出すと、それはonCreateViewを呼び出し、そのラインcallType.call(callType.callNumber)呼ばれinitializeInjector()前。 super.onCreate()呼び出しあなたが常に前initializeInjector()を呼び出す必要があり

注:

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

Thakますが、私はcallType.call(callType.callNumber) 'を呼び出すとき、それは'動作するので、それは奇妙だが、私は変更しますそれ。私の問題はCallTypeクラスにあります。私はこのクラスに価値を入れたいと思っています。しかし、私はそれが何も拡張していないので、どのようにわからない。 – Halima

+0

私は本当にブロックされています...あなたは何か考えがある場合。あなたの助けを差し上げます – Halima

+0

コンストラクタで 'kodein'プロパティを渡してから、標準的な検索メソッドを使用できます:https://salomonbrys.github.io/Kodein/#_dependency_retrieval –

関連する問題