如何处理从 xml 到 Activity 的点击

How to handle click from xml to Activity

我是 android 的新手,正在学习本教程:https://www.youtube.com/watch?v=qK0QNA0sMGc&t=2710s这是印地语

在我的MainActivity.java:


当我尝试 运行 应用程序时,它给出错误信息:

9 errors found
1 warning found
2 typos found

让我在
末尾加分号 Log.i(tag:"this", msg:"clickbtn: This is a message");
我已经放下了

这是我的activity_main.xml

谁能告诉我错误是什么?

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
    android:id="@+id/topText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="60dp"
    android:includeFontPadding="false"
    android:paddingTop="10dip"
    android:paddingBottom="10dip"
    android:text="Welcome to Shivam Travels"
    android:textAppearance="@style/TextAppearance.AppCompat.Body1"
    android:textSize="24sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.504"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<EditText
    android:id="@+id/editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="32dp"
    android:ems="10"
    android:hint="Enter your username"
    android:inputType="textPersonName"
    app:layout_constraintStart_toStartOf="@+id/topText"
    app:layout_constraintTop_toBottomOf="@+id/topText" />

<EditText
    android:id="@+id/editText2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="32dp"
    android:ems="10"
    android:hint="Enter your password"
    android:inputType="textPassword"
    app:layout_constraintStart_toStartOf="@+id/editText"
    app:layout_constraintTop_toBottomOf="@+id/editText" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="28dp"
    android:onClick="clickbtn"
    android:text="Sign In"
    app:layout_constraintStart_toStartOf="@+id/checkBox"
    app:layout_constraintTop_toBottomOf="@+id/checkBox" />

<CheckBox
    android:id="@+id/checkBox"
    android:layout_width="176dp"
    android:layout_height="65dp"
    android:layout_marginTop="32dp"
    android:text="Remember me!"
    app:layout_constraintStart_toStartOf="@+id/editText2"
    app:layout_constraintTop_toBottomOf="@+id/editText2" />

从代码中删除 tag:msg:

用这个代码替换你的代码

替换

Log.i(tag:"this", msg:"clickbtn: This is a message");

Log.i("This","This is a message");

下面是您的完整代码片段

JAVA 文件

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

public class MainTestActivity extends Activity {
    Context context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context = this;
        setContentView(R.layout.activity_main);
    }

    public void clickbtn(View view){
        Log.i("This","This is a message");
        Toast.makeText(context, "Button Clicked", Toast.LENGTH_SHORT).show();
    }
}

XML 文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/topText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="60dp"
        android:includeFontPadding="false"
        android:paddingTop="10dip"
        android:paddingBottom="10dip"
        android:text="Welcome to Shivam Travels"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1"
        android:textSize="24sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.504"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:ems="10"
        android:hint="Enter your username"
        android:inputType="textPersonName"
        app:layout_constraintStart_toStartOf="@+id/topText"
        app:layout_constraintTop_toBottomOf="@+id/topText" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:ems="10"
        android:hint="Enter your password"
        android:inputType="textPassword"
        app:layout_constraintStart_toStartOf="@+id/editText"
        app:layout_constraintTop_toBottomOf="@+id/editText" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="28dp"
        android:onClick="clickbtn"
        android:text="Sign In"
        app:layout_constraintStart_toStartOf="@+id/checkBox"
        app:layout_constraintTop_toBottomOf="@+id/checkBox" />

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="176dp"
        android:layout_height="65dp"
        android:layout_marginTop="32dp"
        android:text="Remember me!"
        app:layout_constraintStart_toStartOf="@+id/editText2"
        app:layout_constraintTop_toBottomOf="@+id/editText2" />
</androidx.constraintlayout.widget.ConstraintLayout>

更多详情:solution

希望现在对您有所帮助。

你定义了上面不支持的类型 java.You 可以这样做。

public String tag = "this";
public String msg = "clickbtn:this is a message!";


Log.i(tag,msg);

替换

Log.i(tag:"this", msg:"clickbtn: This is a message");

Log.i("this","clickbtn:this is a message!");

您从屏幕截图中获取了代码。问题是 Android studio 添加了在您使用文字调用方法时显示参数名称的信息。

此信息不是代码的一部分,AndroidStudio 只是添加它以通知您参数并使代码更具可读性。

实际代码应该是:

Log.i("this", "clickbtn: this is a message");

而不是:

Log.i(tag:"this", msg:"clickbtn: this is a message");

如果您使用它,Android Studio 会向您显示 tag:message:,即使它们不是您代码的一部分。