Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Kotlin完成另一个android活动_Java_Android_Kotlin - Fatal编程技术网

Java 使用Kotlin完成另一个android活动

Java 使用Kotlin完成另一个android活动,java,android,kotlin,Java,Android,Kotlin,我正试图用kotlin完成另一个(android)的活动。我知道用java实现它的方法是使用以下代码() 在第一次活动中: BroadcastReceiver broadcast_reciever = new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent intent) { String action = intent.getAction();

我正试图用kotlin完成另一个(android)的活动。我知道用java实现它的方法是使用以下代码()

在第一次活动中:

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);
关于另一项活动:

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)
错误:


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

错误预期成员声明,因为您在类中编写了语句(函数调用)。在该范围内,需要声明(函数、内部类)


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

从另一个函数完成特定活动的简单代码:

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

转换后得到什么?修复特定错误会更容易。@zsmb13问题已用kotlin输出更新。您还可以说什么在这里无效吗?@zsmb13我已经链接了IDE中显示的错误。此代码没有意义(我是指原始答案)。。。为什么?做一个简单的测试。。。启用
Dev Options->Don't Keep Activities
检查是否有效不应将活动保存到变量,因为这可能会导致内存泄漏。