我的Android Studio应用中为什么按钮无响应?

huangapple go评论115阅读模式
英文:

Why are my buttons unresponsive in my Android Studio app?

问题

很抱歉,代码部分不能提供翻译,但我可以为您提供关于问题的解决建议。

根据您提供的信息,您的代码看起来没有明显的错误。但是,如果您的按钮在被点击时没有响应,可能有以下一些常见原因:

  1. XML 布局文件问题:请确保您的 XML 布局文件(activity_first.xml)中的按钮的 ID 与 Java 代码中的按钮 ID 匹配。在您的代码中,按钮的 ID 分别是 logInButtonsignUpButton,请确保它们在 XML 布局文件中也是这样命名的。

  2. 按钮点击监听器:您已经正确地将按钮的点击事件与 onClick 方法关联起来,但请确保您的 FirstActivity 类位于正确的包中,以与 XML 文件中指定的包名一致。检查您的 Java 文件的包声明是否正确。

  3. 目标活动类:确保 LogInSignUp 活动类存在,并且它们的名称与您在 switchActivitiesLogInswitchActivitiesSignUp 方法中指定的一致。同时,确保它们也在 AndroidManifest.xml 文件中正确地声明了。

  4. 日志记录:您可以在 switchActivitiesLogInswitchActivitiesSignUp 方法内添加日志以检查是否成功调用了这些方法。例如,您可以在这些方法的开头添加以下代码:

    Log.d("MyApp", "Switching to LogIn or SignUp activity");
    

    然后,在运行应用程序后,可以查看 Android Studio 的 Logcat 视图以查看是否看到这些日志消息。这可以帮助您确定是否成功调用了这些方法。

  5. 按钮可见性:确保按钮在屏幕上可见。如果其他视图覆盖了按钮,可能会导致按钮无法点击。您可以在布局文件中使用 android:visibility 属性来确保按钮可见。

如果您仍然遇到问题,建议您在 Logcat 中查看是否有任何错误消息或异常,以进一步诊断问题。如果您能提供更多关于错误消息或异常的信息,将有助于更精确地解决问题。

英文:

Why isn't my android studio app switching screens once a button is clicked?
whenever trying to press a button in order to switch to my next activity, the app does not respond.

package com.example.sceabblecalculator;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class FirstActivity extends AppCompatActivity implements View.OnClickListener {
    Button btnLogIn;
    Button btnSignUp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);

        btnLogIn = findViewById(R.id.logInButton);
        btnSignUp = findViewById(R.id.signUpButton);
        btnLogIn.setOnClickListener(this);
        btnSignUp.setOnClickListener(this);
    }




    @Override
    public void onClick(View view) {
        if (view.getId() == btnLogIn.getId()){
            switchActivitiesLogIn();
        }
        if (view.getId() == btnSignUp.getId()){
            switchActivitiesSignUp();
        }
    }


    private void switchActivitiesLogIn() {
        Intent switchActivityIntent = new Intent(this, LogIn.class);
        startActivity(switchActivityIntent);
    }

    private void switchActivitiesSignUp() {
        Intent switchActivityIntent = new Intent(this, SignUp.class);
        startActivity(switchActivityIntent);
    }
}

attaching my xml file:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    android:gravity="center"
    android:padding="16dp">

    <Button
        android:id="@+id/logInButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:text="log in" />

    <Button
        android:id="@+id/signUpButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="sign up" />

</LinearLayout>

The manifest file:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.SceabbleCalculator"
        tools:targetApi="31">
        <activity
            android:name=".FirstActivityGpt"
            android:exported="false" />
        <activity
            android:name=".NewPlayerActivity"
            android:exported="false" />
        <activity
            android:name=".PlayersActivity"
            android:exported="false" />
        <activity
            android:name=".HomeScreen"
            android:exported="false"
            android:label="@string/title_activity_home_screen"
            android:theme="@style/Theme.SceabbleCalculator" />
        <activity
            android:name=".HomeScreenActivity"
            android:exported="false" />
        <activity
            android:name=".home_screen"
            android:exported="false"
            android:label="@string/title_activity_home_screen"
            android:theme="@style/Theme.SceabbleCalculator" />
        <activity
            android:name=".GameActivity"
            android:exported="false">
            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
        <activity
            android:name=".SignUp"
            android:exported="false">
            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
        <activity
            android:name=".LogIn"
            android:exported="false">
            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
    </application>

</manifest>

Ran my entire code via chatGpt and they said my code doesn't contain any errors, but yet my buttons are unresponsive.

Thanks ahead!

答案1

得分: 1

你在 AndroidManifest.xml 文件中注册了登录活动和注册活动吗?

英文:

Have you register Login activity and signup activity in your AndroidManifest.xml file?

答案2

得分: 0

我个人觉得这个实现很令人困惑... 我会采取以下方法:

public class FirstActivity extends AppCompatActivity {
    private Button btnLogIn;
    private Button btnSignUp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);

        btnLogIn = findViewById(R.id.logInButton);
        btnSignUp = findViewById(R.id.signUpButton);
        btnLogIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switchActivitiesLogIn();
            }
        });
        btnSignUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switchActivitiesSignUp();
            }
        });
    }

    private void switchActivitiesLogIn() {
        Intent switchActivityIntent = new Intent(this, LogIn.class);
        startActivity(switchActivityIntent);
    }

    private void switchActivitiesSignUp() {
        Intent switchActivityIntent = new Intent(this, SignUp.class);
        startActivity(switchActivityIntent);
    }
}

如果这不能解决您的问题,请在您的帖子中添加activity_first XML代码。

英文:

Personally, I find this implementation very confusing ... The approach that I would is the following:

public class FirstActivity extends AppCompatActivity {
    private Button btnLogIn;
    private Button btnSignUp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);

        btnLogIn = findViewById(R.id.logInButton);
        btnSignUp = findViewById(R.id.signUpButton);
        btnLogIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               switchActivitiesLogIn();
            }
        });
        btnSignUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switchActivitiesSignUp();
            }
        });
    }

    private void switchActivitiesLogIn() {
        Intent switchActivityIntent = new Intent(this, LogIn.class);
        startActivity(switchActivityIntent);
    }

    private void switchActivitiesSignUp() {
        Intent switchActivityIntent = new Intent(this, SignUp.class);
        startActivity(switchActivityIntent);
    }
}

If this doesn't solve your problem, please also add the activity_first XML code in your post.

答案3

得分: 0

我正在使用 viewBinding 来简化。您可以通过在 build.gradle(:app) 中添加以下代码来启用它。

android {
   ...
     buildFeatures {
        viewBinding true
    }
}

FirstActivity.kt

import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.umesh.testapp.databinding.ActivityFirstBinding

class FirstActivity : AppCompatActivity() {

    lateinit var binding: ActivityFirstBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityFirstBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.logInButton.setOnClickListener {
            Toast.makeText(this, "logInButton click", Toast.LENGTH_LONG).show()
            val switchLoginIntent = Intent(this, LogIn::class.java)
            startActivity(switchLoginIntent)
        }

        binding.signUpButton.setOnClickListener {
            Toast.makeText(this, "signUpButton click", Toast.LENGTH_LONG).show()
            val switchSignUpIntent = Intent(this, SignUp::class.java)
            startActivity(switchSignUpIntent)
        }
    }
}

activity_first.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:padding="16dp">

    <Button
        android:id="@+id/logInButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:text="log in" />

    <Button
        android:id="@+id/signUpButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="sign up" />

</LinearLayout>

尝试这样做,如果仍然遇到问题,请告诉我。确保在 AndroidManifest.xml 文件中定义了 LogInSignUp 活动。

英文:

I am using viewBinding for simplicity. You can enable it by adding the below code in build.gradle(:app).

android {
   ...
     buildFeatures {
        viewBinding true
    }
}

FirstActivity.kt

import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.umesh.testapp.databinding.ActivityFirstBinding


class FirstActivity : AppCompatActivity() {

    lateinit var binding: ActivityFirstBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityFirstBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.logInButton.setOnClickListener {
           Toast.makeText(this, &quot;logInButton click&quot;, Toast.LENGTH_LONG).show()
           val switchLoginIntent = Intent(this, LogIn::class.java)
           startActivity(switchLoginIntent)
        }

        binding.signUpButton.setOnClickListener {
          Toast.makeText(this, &quot;signUpButton click&quot;, Toast.LENGTH_LONG).show()
            val switchSignUpIntent = Intent(this, SignUp::class.java)
            startActivity(switchSignUpIntent)
        }
    }
}

activity_first.xml

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    android:gravity=&quot;center&quot;
    android:padding=&quot;16dp&quot;&gt;

    &lt;Button
        android:id=&quot;@+id/logInButton&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;32dp&quot;
        android:text=&quot;log in&quot; /&gt;

    &lt;Button
        android:id=&quot;@+id/signUpButton&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;16dp&quot;
        android:text=&quot;sign up&quot; /&gt;

&lt;/LinearLayout&gt;

Try this and let me know if still facing issue. Make sure to define LogIn and SignUp activity in AndroidManifest.xml file

huangapple
  • 本文由 发表于 2023年6月5日 06:27:31
  • 转载请务必保留本文链接:https://go.coder-hub.com/76402650.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定