单击 Activity B 中的按钮不会进入 setOnClickListener 并导航到 Activity A

问题描述 投票:0回答:1

我正在创建一个笔记应用程序。我创建了 2 个活动,并有一个按钮,单击该按钮应保存注释并导航到 MainActivity 并显示注释。

binding.btnSaveNotes.setOnClickListener {Toast.makeText(this@AddNotes, "Check Mark Clicked", Toast.LENGTH_SHORT).show()val title = binding.editTextTitle.text.toString()val noteDesc = binding.editTextDesc.text.toString()
        if (title.isNotEmpty() || noteDesc.isNotEmpty()) {
            val formatter = SimpleDateFormat("EEE, d MMM yyy HH:mm a")

            note = if (isUpdate) {
                Note(old_note.id, title, noteDesc, formatter.format(Date()))
            } else {
                Note(null, title, noteDesc, formatter.format(Date()))
            }

            val intent = Intent()
            intent.putExtra("note", note)
            setResult(Activity.RESULT_OK, intent)
            finish()

        } else {
            Toast.makeText(this@AddNotes, "Please enter some data", Toast.LENGTH_SHORT).show()
            return@setOnClickListener
        }
    }

我尝试更新笔记应用程序以具有按钮/浮动操作按钮或图像。还添加了后退箭头。单击此代码后按钮似乎没有进入此代码。

android kotlin onclicklistener
1个回答
0
投票

你上传的代码不够,所以我将之前练习过的相关代码制作成与你的问题类似。

使用导航到 AddNotes 活动的按钮创建 MainActivity 布局 (activity_main.xml):

<!-- activity_main.xml -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/btnAddNote"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Add Note" />
</RelativeLayout>

创建MainActivity类(MainActivity.kt):

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*

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

        btnAddNote.setOnClickListener {
            val intent = Intent(this, AddNotes::class.java)
            startActivityForResult(intent, 1)
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == 1 && resultCode == RESULT_OK) {
            val note = data?.getSerializableExtra("note") as Note
            // Handle the returned note data here and display it in the MainActivity UI.
        }
    }
}

创建 AddNotes 布局 (activity_add_notes.xml),其中包含标题的 EditText、描述的 EditText 和保存注释的按钮:

<!-- activity_add_notes.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <EditText
        android:id="@+id/editTextTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Title" />

    <EditText
        android:id="@+id/editTextDesc"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Description" />

    <Button
        android:id="@+id/btnSaveNotes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save" />
</LinearLayout>

创建 AddNotes 类 (AddNotes.kt):

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_add_notes.*
import java.text.SimpleDateFormat
import java.util.*

class AddNotes : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_add_notes)

        btnSaveNotes.setOnClickListener {
            val title = editTextTitle.text.toString()
            val noteDesc = editTextDesc.text.toString()
            if (title.isNotEmpty() || noteDesc.isNotEmpty()) {
                val formatter = SimpleDateFormat("EEE, d MMM yyy HH:mm a")
                val note = Note(null, title, noteDesc, formatter.format(Date()))

                val intent = Intent()
                intent.putExtra("note", note)
                setResult(Activity.RESULT_OK, intent)
                finish()
            } else {
                // Display an error message or handle empty fields.
            }
        }
    }
}

创建一个数据类Note来保存你的笔记信息:

import java.io.Serializable

data class Note(
    val id: Long?,
    val title: String,
    val description: String,
    val timestamp: String
) : Serializable

我测试了它,这段代码可以工作......祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.