簡體   English   中英

android中的向上導航

[英]Up Navigation in android

當我按下手機或支持操作欄上的后退按鈕時,它正在退出應用程序。 如何修復它以返回主要活動在登錄代碼中:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_login)
    
    supportActionBar?.setDisplayShowHomeEnabled(true) 
.... }
override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.itemId) {
        android.R.id.home -> {
            NavUtils.navigateUpFromSameTask(this)
            return true
        }
    }
    return super.onOptionsItemSelected(item)
}

在清單文件中:

<activity
        android:name=".LoginActivity"
        android:label="Login"
        android:parentActivityName=".MainActivity">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.food_bank.MainActivity"/>
</activity>

什么對我有用:

主要活動:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val button = findViewById<Button>(R.id.button)
        button.setOnClickListener{
            startActivity(Intent(this, LoginActivity::class.java))
        }
    }
}

登錄活動:

class LoginActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
    }
// no onOptionsSelected here
}

顯現:

(...)
        <activity
            android:name="LoginActivity"
            android:exported="false"
            android:label="@string/title_activity_login"
            android:parentActivityName=".MainActivity"/>
(...)

我猜從兩次supportActionBar?.setDisplayShowHomeEnabled(true)切換到 supportActionBar supportActionBar?.setDisplayHomeAsUpEnabled(true)與它有關

像這樣更改您的onOptionsItemSelected

android.R.id.home -> {
    onBackPressed()
    return true
}

並像這樣覆蓋您的活動的onBackPressed方法

override fun onBackPressed() {
    super.onBackPressed()
    NavUtils.navigateUpFromSameTask(this)
}

所以我從所有意圖代碼中刪除了“finish()”,它通過在清單文件中命名父活動來工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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