簡體   English   中英

從聯系人選擇活動中返回時,應用程序無例外關閉

[英]When returning from contacts pick activity, the app closes without exception

在我的Android應用程序中,當我從“聯系人”活動中選擇一個聯系人時,該應用程序關閉而沒有返回任何異常或錯誤消息,而不是返回到調用該活動的活動。

我嘗試使用不同的標志啟動此活動,但沒有結果

class AddPhoneCompatActivity : BaseCompatActivity(), AddPhoneContract.View, View.OnClickListener {
    @Inject
    lateinit var presenter: AddPhonePresenter

    override fun init(savedInstanceState: Bundle?) {
    log("Add phone screen - Loading view", LOGS_SIMPLE_FILE_NAME)

    setContentView(R.layout.activity_add_phone)
    MyLocationNotifierApp.getInjector().inject(this)
    presenter.attach(this)

    GeneralUtil.checkPermission(
        Manifest.permission.READ_CONTACTS,
        GeneralUtil.READ_CONTACTS_REQUEST_CODE,
        applicationContext,
        this
    )

    presenter.checkIntent(intent)

    btnAddPhoneFromContacts.setOnClickListener(this)
    btnPhoneNext.setOnClickListener(this)
}

    override fun onBackPressed() {
    goBack()
}

override fun onOptionsItemSelected(item: MenuItem?): Boolean {
    when(item?.itemId) {
        android.R.id.home -> {
            goBack()
        }
    }

    return true
}

private fun goBack() {
    intent.setClass(this, AddLabelCompatActivity::class.java)
    intent.putExtra(GeneralUtil.PHONE_SERIALIZATION_KEY, edAddPhoneNum.text.toString())

    startActivity(intent)
    finish()
}

    override fun onClick(v: View?) {
    when (v?.id) {
        btnAddPhoneFromContacts.id -> {
            log("Starting contacts picker", LOGS_SIMPLE_FILE_NAME)

            val intent = Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI)
            intent.type = ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE;
            startActivityForResult(intent, GeneralUtil.REQUEST_CODE_SEARCH_CONTACT)
        }

        btnPhoneNext.id -> {
            presenter.proceedNext(edAddPhoneNum.text.toString(), intent)
        }
    }
}

    override fun updatePhoneEditField(phoneNum: String?) = edAddPhoneNum.setText(phoneNum)

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    log("Add phone screen - onActivityResult called. Checking passed data.", LOGS_SIMPLE_FILE_NAME)

    if (requestCode == GeneralUtil.REQUEST_CODE_SEARCH_CONTACT) {
        if (resultCode == Activity.RESULT_OK) {
            presenter.processAddPhoneRequestFomIntent(data)
        }
    }
}

}

假設在選擇聯系人之后,我返回到活動並顯示一個對話框,其中包含與該聯系人相對應的電話號碼列表。 但是,該應用程序將關閉,而沒有任何通知。

找到了原因。 實體創建流程未使用startActivityForResult,而是在活動之間傳遞的數據段。 我在開始活動中使用標志Intent.FLAG_ACTIVITY_CLEAR_TOP或Intent.FLAG_ACTIVITY_NO_HISTORY啟動了該流程。 當我在開始流程活動中刪除此行時,它按預期開始工作。

暫無
暫無

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

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