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"
/>
...
我试图在单击 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"
/>
...