簡體   English   中英

使用Kotlin從另一個人完成android活動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM