2016-07-24 4 views
1

startActivity()を動的に呼び出す方法はありますか?事前にAnkoComponentの動的使用<*> .startActivity()

fun <T: Activity> buttonGoTo(): android.widget.Button { 

    return button() { 
     // do stuff 
     onClick {startActivity<T>()} 
    } 
} 

ありがとう:

目的は、以下のようなものを持っているだろう。あなたはそれがreified types parametersを使用して見ることができるように

inline fun <reified T: Activity> Fragment.startActivity(vararg params: Pair<String, Any>)

+0

新しい 'Intent'オブジェクトを介して、新たな活動を開始することができます。 Androidドキュメントを確認してください。 – spirit

答えて

1

あなたが使用しようとしているstartActivity方法は、のようなシグネチャを持っています。その結果、別のヘルパー関数で関数をラップする場合は、関数がインライン化され、reified型のパラメータを使用する必要があります。さらに重要なことは、ネストされた関数/ラムダがインライン展開を使用する必要があることです。onClickの場合は真ではありません。

しかし、私はあなたがまだそのようなintentFor<T>であなたの目標を達成することができると思う:

inline fun <reified T : Activity> Context.buttonGoTo() = UI { 
    val target = intentFor<T>() 
    button() { 
     onClick { 
      startActivity(target) 
     } 
    } 
}.view 
関連する問題