Я видел этот вопрос повсеместно, но я не видел, чтобы кто-нибудь смог ответить, почему функция не вызывается.
Я запустил приложение в режиме отладки.с точкой останова, установленной в функции onBackPressed, и она полностью игнорирует ее.Компилятор даже распознает и меняет мою красную точку останова на кружок с линией, проходящей через него.
У меня есть ContractSelectAdapter с setOnClickListener, передающий выбранный контракт в ContractMenuActivity с помощью putExtra ().После того, как в ContractMenuActivity есть кнопка, чтобы открыть действие ниже, UploadImageActivity, и в то время как в упражнении я хочу, чтобы пользователь мог нажать кнопку «Назад», чтобы снова открыть ContractMenuActivity, но внутри функции onCreate в ContractMenuActivity есть вызов getStringExtra, вызывающий ее.потерпеть крах, потому что нет "лишнего".Вот почему я пытаюсь использовать onBackPressed.Теоретически это должно работать идеально.
Я пытался вручную вызвать функцию onBackPressed в функции onCreate UploadImageActivity, чтобы убедиться, что она работает и работает.Это немедленно открывает ContractMenuActivity.Так что функция работает, просто по какой-то причине ее никогда не вызывают.Чрезвычайно разочаровывает.
функция onBackPressed находится в самом конце класса UploadImageActivity (первый фрагмент кода)
Любая помощь будет принята с благодарностью.
class UploadImageActivity : AppCompatActivity() {
var prefs: Prefs? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_upload_image)
prefs = Prefs(this)
}
override fun onBackPressed()
{
super.onBackPressed()
val returnIntent = Intent(this, ContractMenuActivity::class.java)
returnIntent.putExtra(SELECTED_CONTRACT, prefs!!.rmsAppContractID)
startActivity(returnIntent)
}
}
class ContractMenuActivity : AppCompatActivity()
{
var selectedContract: String = ""
var prefs: Prefs? = null
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_contract_menu)
prefs = Prefs(this)
val btnUploadImage = findViewById<Button>(R.id.btnUploadImage)
selectedContract = intent.getStringExtra(SELECTED_CONTRACT)
prefs!!.rmsAppContractID = this.selectedContract
var contractSelectMsg = "Contract ${prefs!!.rmsAppContractID} selected"
val duration = Toast.LENGTH_SHORT
Toast.makeText(this, contractSelectMsg, duration).show()
btnUploadImage.setOnClickListener {this.openUploadImage()}
}
public fun openUploadImage()
{
val registered = prefs!!.rmsAppRegistered
var message: String
if(registered)
{
val intent = Intent(this, UploadImageActivity::class.java)
startActivity(intent);
}
else
{
message = "You must Pair this device before you can upload an image."
val intent = Intent(this, PostResponseMessageActivity::class.java).apply {
putExtra(POST_RESPONSE_MESSAGE, message)
}
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
}
Имя родителя в манифесте:
<activity
android:name=".ContractMenuActivity"
android:label="@string/contractMenuLabel"
android:parentActivityName=".ContractSelectActivity">
</activity>
<activity
android:name=".UploadImageActivity"
android:label="@string/uploadImageLabel"
android:parentActivityName=".ContractMenuActivity">
</activity>