有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用Kotlin完成另一个安卓活动

我正试图用kotlin完成另一个(安卓)的活动。我知道用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输出(第一个活动)[OK]

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输出(第二项活动)[OK]

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

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

修复:显示的代码是正确的,您只需将其放在onCreate函数中即可


共 (2) 个答案

  1. # 1 楼答案

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

    您必须将语句放在函数中(然后从某处调用),以便执行它们

  2. # 2 楼答案

    完成另一项特定活动的简单代码:

    class 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()以完成上述活动