简体   繁体   English

Android TextView OnClick 事件不起作用

[英]Android TextView OnClick-Event doesn't work

I have to program a TicTacToe app:我必须编写一个井字游戏应用程序:

This is the code of the activity_main.xml: (It's a simple 3x3 field of TextViews on a black background)这是 activity_main.xml 的代码:(这是一个简单的 3x3 字段的 TextViews 在黑色背景上)

<?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"
    android:background="#000000"
    android:screenOrientation="portrait"
    tools:context=".MainActivity">

    <androidx.gridlayout.widget.GridLayout
        android:layout_width="294dp"
        android:layout_height="286dp"
        android:background="#000000"
        app:layout_constraintBottom_toTopOf="@+id/button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView">

        <TextView
            android:id="@+id/tictactoe_center_left"
            android:layout_width="97dp"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:editable="false"
            android:ems="10"
            android:enabled="false"
            android:onClick="click_center_left"
            android:text="@string/game_playersymbol_x"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="70sp"
            android:textStyle="bold"
            app:layout_column="0"
            app:layout_row="1" />

        <TextView
            android:id="@+id/tictactoe_center_right"
            android:layout_width="97dp"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:editable="false"
            android:ems="10"
            android:enabled="false"
            android:onClick="click_center_right"
            android:text="@string/game_playersymbol_x"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="70sp"
            android:textStyle="bold"
            app:layout_column="2"
            app:layout_row="1" />

        <TextView
            android:id="@+id/tictactoe_center_center"
            android:layout_width="97dp"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:editable="false"
            android:ems="10"
            android:enabled="false"
            android:onClick="click_center_center"
            android:text="@string/game_playersymbol_x"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="70sp"
            android:textStyle="bold"
            app:layout_column="1"
            app:layout_row="1" />

        <TextView
            android:id="@+id/tictactoe_top_left"
            android:layout_width="97dp"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:ems="10"
            android:enabled="false"
            android:focusable="true"
            android:onClick="click_top_left"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="70sp"
            android:textStyle="bold"
            app:layout_column="0"
            app:layout_row="0"
            tools:text="@string/game_playersymbol_x" />

        <TextView
            android:id="@+id/tictactoe_top_center"
            android:layout_width="97dp"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:editable="false"
            android:ems="10"
            android:enabled="false"
            android:onClick="click_top_center"
            android:text="@string/game_playersymbol_x"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="70sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/tictactoe_top_right"
            android:layout_width="97dp"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:editable="false"
            android:ems="10"
            android:enabled="false"
            android:onClick="click_top_right"
            android:text="@string/game_playersymbol_x"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="70sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/tictactoe_bottom_left"
            android:layout_width="97dp"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:editable="false"
            android:ems="10"
            android:enabled="false"
            android:onClick="click_bottom_left"
            android:text="@string/game_playersymbol_x"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="70sp"
            android:textStyle="bold"
            app:layout_column="0"
            app:layout_row="2" />

        <TextView
            android:id="@+id/tictactoe_bottom_right"
            android:layout_width="97dp"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:editable="false"
            android:ems="10"
            android:enabled="false"
            android:onClick="click_bottom_right"
            android:text="@string/game_playersymbol_x"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="70sp"
            android:textStyle="bold"
            app:layout_column="2"
            app:layout_row="2" />

        <TextView
            android:id="@+id/tictactoe_bottom_center"
            android:layout_width="97dp"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:editable="false"
            android:ems="10"
            android:enabled="false"
            android:onClick="click_bottom_center"
            android:text="@string/game_playersymbol_x"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="70sp"
            android:textStyle="bold"
            app:layout_column="1"
            app:layout_row="2" />

    </androidx.gridlayout.widget.GridLayout>

    <Button
        android:id="@+id/button"
        android:layout_width="213dp"
        android:layout_height="61dp"
        android:layout_marginBottom="56dp"
        android:background="@drawable/roundbutton"
        android:text="@string/menu_play_singleplayer"
        android:textColor="#FFFFFF"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:textColor="#979797"
        android:textSize="50sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.066" />

</androidx.constraintlayout.widget.ConstraintLayout>

This is the code of the MainActivity.java:这是 MainActivity.java 的代码:

package com.example.tictactoe;

import androidx.appcompat.app.AppCompatActivity;

import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private int counter = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportActionBar().hide();
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

    public void click_top_left(View v) { click_action((TextView)findViewById(R.id.tictactoe_top_left)); }
    public void click_top_center(View v) { click_action((TextView)findViewById(R.id.tictactoe_top_center)); }
    public void click_top_right(View v) { click_action((TextView)findViewById(R.id.tictactoe_top_right)); }

    public void click_center_left(View v) { click_action((TextView)findViewById(R.id.tictactoe_center_left)); }
    public void click_center_center(View v) { click_action((TextView)findViewById(R.id.tictactoe_center_center)); }
    public void click_center_right(View v) { click_action((TextView)findViewById(R.id.tictactoe_center_right)); }

    public void click_bottom_left(View v) { click_action((TextView)findViewById(R.id.tictactoe_bottom_left)); }
    public void click_bottom_center(View v) { click_action((TextView)findViewById(R.id.tictactoe_bottom_center)); }
    public void click_bottom_right(View v) { click_action((TextView)findViewById(R.id.tictactoe_bottom_right)); }

    public void click_action(TextView tv) {
        if ((counter%2)==0)
            tv.setText("O");
        else
            tv.setText("X");
        counter++;
    }
}

I've set the android:clickable to true.我已将 android:clickable 设置为 true。 I've set a onclick listener.我设置了一个 onclick 监听器。 I simply cannot find my mistake...我根本找不到我的错误......

I would appreciate any kind of help!我将不胜感激任何帮助!

first give an id to your textview then Define a Sample like Textview textview find it in java and use setOnClickListener() in onCreate method just like below.It will definitely works. first give an id to your textview then Define a Sample like Textview textview find it in java and use setOnClickListener() in onCreate method just like below.It will definitely works. textveiw.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { }});

You have set to all the TextView s:您已设置为所有TextView

android:enabled="false"

Why?为什么?
Change it to:将其更改为:

android:enabled="true"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM