TextView onClickListener 无法正常工作

TextView onClickListener not working properly

我试图在单击 MainActivity 布局上的 TextView 时调用另一个布局。我尝试在 XML 文件上使用 onClick(),但由于课程目的,它要求所有内容都从 Java 文件处理。以下是讲师给出的示例代码,理论上应该可以,但实际上没有,后面是我自己的代码。当我单击 TextView 以调用其他布局时,程序崩溃了。

我的MainActivity.java

package com.wanli.jorgemorales.additionalviews;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Set the content of the activity to use the activity_main.xml layout file
        setContentView(R.layout.activity_main);

        TextView numbers = (TextView) findViewById(R.id.numbers);
        TextView family = (TextView) findViewById(R.id.family);
        TextView colors = (TextView) findViewById(R.id.colors);
        TextView phrases = (TextView) findViewById(R.id.phrases);

        numbers.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, Numbers.class);
                startActivity(intent);
            }
        });


    }
}

您可以使用此属性在 xml 中设置点击处理程序:

android:clickable="true"

不要忘记 clickable 属性,没有它,不会调用点击处理程序。

main.xml

...

<TextView 
   android:id="@+id/numbers"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"               
   android:text="Click Me"
   android:textSize="55sp"                
   android:clickable="true"/> <!--Do not forget this attribute-->
...

MyActivity.java

// Find the View that shows the numbers category
TextView numbers = (TextView) findViewById(R.id.numbers);

// Set a click listener on that View
numbers.setOnClickListener(new View.OnClickListener() {
   // The code in this method will be executed when the numbers View is clicked on.
   @Override
   public void onClick(View view) {
       Intent numbersIntent = new Intent(MainActivity.this, NumbersActivity.class);
       startActivity(numbersIntent);
   }
});

设置 onClickListener 的最简单方法是使用 Button。按钮也可以容纳文本。将 XML 文件中的 TextView numbers 更改为 Button,并在 java 代码中进行更改。

示例:

    Button numbers = (Button) findViewById(R.id.numbers); //Remember to change type in XML
    TextView family = (TextView) findViewById(R.id.family);
    TextView colors = (TextView) findViewById(R.id.colors);
    TextView phrases = (TextView) findViewById(R.id.phrases);

    numbers.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, Numbers.class);
            startActivity(intent);
        }
    });

XML的例子:

...
<Button
    android:id="@+id/numbers"
    ...
    android:text="Text"

/>
...