用Kotlin完成另一个的android活动

时间:2017-06-27 13:05:16

标签: java android kotlin

我试图用kotlin完成另一个(android)的活动。我知道使用java执行此操作的是使用以下代码(https://stackoverflow.com/a/10379275/7280257

在第一项活动中:

BroadcastReceiver broadcast_reciever = new BroadcastReceiver() {

    @Override
    public void onReceive(Context arg0, Intent intent) {
        String action = intent.getAction();
        if (action.equals("finish_activity")) {
            finish();
            // DO WHATEVER YOU WANT.
        }
    }
};
registerReceiver(broadcast_reciever, new IntentFilter("finish_activity"));

关于其他活动:

Intent intent = new Intent("finish_activity");
sendBroadcast(intent);

由于某种原因,将java活动转换为kotlin并没有给出有效的输出,如果有人能给我正确的语法,用 kotlin 正确地完成它我会很感激

kotlin输出(第一项活动) [确定]

val broadcast_reciever = object : BroadcastReceiver() {

    override fun onReceive(arg0: Context, intent: Intent) {
        val action = intent.action
        if (action == "finish_activity") {
            finish()
            // DO WHATEVER YOU WANT.
        }
    }
}
registerReceiver(broadcast_reciever, IntentFilter("finish_activity"))

kotlin输出(第二活动) [确定]

            val intent = Intent("finish_activity")
            sendBroadcast(intent)

错误:http://i.imgur.com/qaQ2YHv.png

FIX:显示的代码是正确的,您只需将其置于onCreate功能

2 个答案:

答案 0 :(得分:0)

错误Expecting member declaration存在,因为您在类中编写了一个语句(函数调用)。在该范围内,需要声明(函数,内部类)。

你必须将你的语句放在函数中(然后从某个地方调用它们)才能执行它们。

答案 1 :(得分:0)

简单的代码即可完成另一个活动

代码:

SplashActivity类:AppCompatActivity(),NavigationListner {

class MyClass{
    companion object{
        var activity: Activity? = null
    }
}
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    MyClass.activity = this@SplashActivity
}


override fun navigateFromScreen() {
    val intent = Intent(this,LoginActivity::class.java)
    startActivity(intent)
}

}

现在从另一个活动中调用 SplashActivity.MyClass.activity?.finish()来完成上述活动。