我正在尝试使用 kotlin 完成另一个(android)的 Activity 。我知道用 java 做它的方法是使用以下代码 ( https://stackoverflow.com/a/10379275/7280257 )
在第一个 Activity 中:
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"));
关于其他 Activity :
Intent intent = new Intent("finish_activity");
sendBroadcast(intent);
出于某种原因,将 java Activity 转换为 kotlin 不会提供有效输出,如果有人能给我正确的语法以使用 kotlin 正确地完成它,我将不胜感激
kotlin 输出(第一个 Activity )[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 输出(第二个 Activity )[OK]
val intent = Intent("finish_activity")
sendBroadcast(intent)
错误:http://i.imgur.com/qaQ2YHv.png
修复:显示的代码是正确的,您只需要将它放在 onCreate 函数中
最佳答案
完成另一个特定 Activity 的简单代码:
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)
}
}
现在从另一个 Activity 调用 SplashActivity.MyClass.activity?.finish()
以完成上述 Activity 。
关于java - 使用 Kotlin 从另一个完成 android Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44781054/