如何让 TextView 在 Android Studio 中充当按钮?
How to make a TextView act as a button in Android Studio?
我想要一个 TextView 来响应点击并打开第二个 Activity.The Main Activity 包含两个文本字段,一个按钮和另一个 TextView,它需要充当 button.This代码导致应用程序在 运行.
时崩溃
这是 MainActivity.java 文件。-
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView t1 = (TextView)findViewById(R.id.textView2);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onSignUpClick(View view){
t1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(".SignUpActivity");
startActivity(intent);
}
}
);
}
}
这是 AndroidManifest.xml 文件。-
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.abinas.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SignUpActivity"
android:parentActivityName=".MainActivity">
</activity>
</application>
</manifest>
错误是什么?尝试为此更改您的 Intent
Intent intent = new Intent(MainActivity.this, SignUpActivity.class);
startActivity(intent);
将此代码移至您的 onCreate
TextView t1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
t1 = (TextView)findViewById(R.id.textView2);
t1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(".SignUpActivity");
startActivity(intent);
}
}
);
}
将 Intent
更改为具有以下结构的内容:
new Intent( current class.this, target activity.class)
在代码中应该如下所示:
public void onSignUpClick(View view){
t1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SignUpActivity.class)
startActivity(intent);
}
}
);
假设您正在从您那里调用 onSignUpClick XML 它应该很简单:
public void onSignUpClick(View view){
Intent intent = new Intent(MainActivity.this, SignUpActivity.class);
startActivity(intent);
}
或者,您可以在创建 activity 时创建侦听器:
public class MainActivity extends AppCompatActivity {
TextView t1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
t1 = (TextView)findViewById(R.id.textView2);
t1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SignUpActivity.class);
startActivity(intent);
}
}
);
}
}
所有视图小部件都可以覆盖 onclick 方法,但是您做错了,您在另一个 onclick 方法中使用了 onclick 方法,另一件事是您应该在 onCreate 方法中使用 findViewById。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView t1 = (TextView)findViewById(R.id.textView2);
t1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context,SignUpActivity.class);
startActivity(intent);
}
}
);
}
}
您需要将文本视图包裹在线性布局中,并使线性布局可点击。
<LinearLayout
android:id="@+id/linear_forgot_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_small"
android:orientation="vertical"
android:clickable="true"
android:focusable="true"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintEnd_toEndOf="@+id/btn_enter"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_enter">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_forgot_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorAccent"
tools:text="Forgot password?"
/>
</LinearLayout>
然后在你 activity 或片段中获取 onclick 事件。
我想要一个 TextView 来响应点击并打开第二个 Activity.The Main Activity 包含两个文本字段,一个按钮和另一个 TextView,它需要充当 button.This代码导致应用程序在 运行.
时崩溃这是 MainActivity.java 文件。-
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView t1 = (TextView)findViewById(R.id.textView2);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onSignUpClick(View view){
t1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(".SignUpActivity");
startActivity(intent);
}
}
);
}
}
这是 AndroidManifest.xml 文件。-
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.abinas.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SignUpActivity"
android:parentActivityName=".MainActivity">
</activity>
</application>
</manifest>
错误是什么?尝试为此更改您的 Intent
Intent intent = new Intent(MainActivity.this, SignUpActivity.class);
startActivity(intent);
将此代码移至您的 onCreate
TextView t1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
t1 = (TextView)findViewById(R.id.textView2);
t1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(".SignUpActivity");
startActivity(intent);
}
}
);
}
将 Intent
更改为具有以下结构的内容:
new Intent( current class.this, target activity.class)
在代码中应该如下所示:
public void onSignUpClick(View view){
t1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SignUpActivity.class)
startActivity(intent);
}
}
);
假设您正在从您那里调用 onSignUpClick XML 它应该很简单:
public void onSignUpClick(View view){
Intent intent = new Intent(MainActivity.this, SignUpActivity.class);
startActivity(intent);
}
或者,您可以在创建 activity 时创建侦听器:
public class MainActivity extends AppCompatActivity {
TextView t1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
t1 = (TextView)findViewById(R.id.textView2);
t1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SignUpActivity.class);
startActivity(intent);
}
}
);
}
}
所有视图小部件都可以覆盖 onclick 方法,但是您做错了,您在另一个 onclick 方法中使用了 onclick 方法,另一件事是您应该在 onCreate 方法中使用 findViewById。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView t1 = (TextView)findViewById(R.id.textView2);
t1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context,SignUpActivity.class);
startActivity(intent);
}
}
);
}
}
您需要将文本视图包裹在线性布局中,并使线性布局可点击。
<LinearLayout
android:id="@+id/linear_forgot_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_small"
android:orientation="vertical"
android:clickable="true"
android:focusable="true"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintEnd_toEndOf="@+id/btn_enter"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_enter">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_forgot_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorAccent"
tools:text="Forgot password?"
/>
</LinearLayout>
然后在你 activity 或片段中获取 onclick 事件。