[英]Finish android activity from another with 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函數中
因為您在類中編寫了一條語句(函數調用),所以出現了Expecting member declaration
錯誤。 在此范圍內,需要聲明(函數,內部類)。
您必須將語句放置在函數中(然后從某個地方調用這些語句)才能執行它們。
簡單的代碼完成另一個活動:
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()
以完成上述活動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.