javaでは、アクティビティのスターター静的メソッドを定義できます。 Androidのメーカーでは、「スターター」テンプレートはそれのためにもあります:私は(Androidのメーカー3.0 Canary4上)Kotlinでこの同じ概念のまわりで私の頭をラップしてるandroidアクティビティKotlinの静的スターターメソッド
public class MyActivity extends AppCompatActivity {
private static final String EXTRA_FOO = "foo";
public static void start(Context caller, String bar){
Intent intent = new Intent(caller, MyActivity.class);
intent.putExtra(EXTRA_FOO, bar);
caller.startActivity(intent);
}
}
:それはこのようになります私が思いついたもっとも近いものは、次のようなものです:
class MyActivity : AppCompatActivity() {
companion object {
private val EXTRA_FOO = "foo"
fun start(caller: Context, bar: String){
val intent = Intent(caller, MyActivity::class.java)
intent.putExtra(EXTRA_FOO, bar)
caller.startActivity(intent)
}
}
}
もっと簡潔でエレガントな方法がありますか?私はこれが行く方法だとは信じられませんが、Javaよりも醜いです。また、Kotlin用の「スターター」テンプレートもありません。
ありがとう、私はこのソリューションが好きです。他のアプローチも提案しますか? – lelloman
しかし、このメソッドを呼び出し元のアクティビティから呼び出すにはどうすればよいですか?私はあなたの第二の選択肢を試みました。 –
@Samコンパニオンオブジェクトを避けるためにフラグメントを作成する提案がありますか? – mac229