Android 使用TextView';s onClick进入下一页

Android 使用TextView';s onClick进入下一页,android,android-layout,android-intent,android-emulator,Android,Android Layout,Android Intent,Android Emulator,为了更好的用户界面,我考虑用文本视图代替按钮。单击TextView时,应显示应用程序的下一页。我在XML文件中定义了onClick函数,但它不起作用 这是XML文件 <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true"

为了更好的用户界面,我考虑用文本视图代替按钮。单击TextView时,应显示应用程序的下一页。我在XML文件中定义了onClick函数,但它不起作用

这是XML文件

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="16dp"
    android:onClick="serve"
    android:text="@string/Service"
    android:textSize="20dp" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_below="@+id/textView1"
    android:layout_marginTop="87dp"
    android:onClick="complain"
    android:text="@string/Comp"
    android:textSize="20dp" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView2"
    android:layout_below="@+id/textView2"
    android:layout_marginTop="121dp"
    android:onClick="feed"
    android:text="@string/Feedback"
    android:textSize="20dp" />

确保您的活动中有以下方法(具有匹配的签名)。它们各自应采用一个
视图
的参数

public void serve(View v) { }
public void complain(View v) { }
public void feed(View v) { }

确保您的活动中有以下方法(具有匹配的签名)。它们各自应采用一个
视图
的参数

public void serve(View v) { }
public void complain(View v) { }
public void feed(View v) { }

默认情况下,文本视图不可单击,因此无法调用onClick操作。。。只需将:
android:clickable=“true”
添加到每个文本视图:

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="16dp"
    android:clickable="true"
    android:onClick="serve"
    android:text="@string/Service"
    android:textSize="20dp" />
您需要修改每个文本视图中的
id
onClick
属性,如下所示:

<TextView
    android:id="@+id/serve"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="16dp"
    android:clickable="true"
    android:onClick="click"
    android:text="@string/Service"
    android:textSize="20dp" />

默认情况下,文本视图不可单击,因此无法调用onClick操作。。。只需将:
android:clickable=“true”
添加到每个文本视图:

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="16dp"
    android:clickable="true"
    android:onClick="serve"
    android:text="@string/Service"
    android:textSize="20dp" />
您需要修改每个文本视图中的
id
onClick
属性,如下所示:

<TextView
    android:id="@+id/serve"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="16dp"
    android:clickable="true"
    android:onClick="click"
    android:text="@string/Service"
    android:textSize="20dp" />

您的活动(基于您的代码,没有任何
onClickListeners()
您需要获取对TextView的引用,然后添加一个事件处理程序,然后在事件处理程序中调用
service()、contrium()、feed()
请参见。下面是活动类中更改的示例

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

    setContentView(R.layout.activity_main);

    TextView textView1 = (TextView) findViewById(R.id.TextView1);
    textView1.setOnClickListener(new View.OnClickListener() {

        @Override
        protected void onClick(View view) {

            serve(view);
        }

    });

    //Repeat for each text view...
}
每个TextView必须在xml中设置以下属性:

android:onClick="onClick"
android:clickable="true"
编辑:

我仍然不知道活动在哪里实现OnclickListener,如果您打算这样做的话

public class MainActivity extends Activity implements OnclickListener {


    protected void onClick(View view) {
        // borrowed from @Sam
        Intent intent;

        switch(v.getId()) {
            case R.id.serve: // R.id.textView1
                intent = new Intent(this, Second.class);
                break;
            case R.id.complain: // R.id.textView2
                intent = new Intent(this, Third.class);
                break;
            case R.id.feed: // R.id.textView3
                intent = new Intent();
            }

            startActivity(intent);
    }

}
您的活动(基于您的代码)没有任何
onClickListeners()
您需要获取对TextView的引用,然后添加一个事件处理程序,然后在事件处理程序中调用
service()、complain()、feed()
请参见。下面是活动类中更改的示例

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

    setContentView(R.layout.activity_main);

    TextView textView1 = (TextView) findViewById(R.id.TextView1);
    textView1.setOnClickListener(new View.OnClickListener() {

        @Override
        protected void onClick(View view) {

            serve(view);
        }

    });

    //Repeat for each text view...
}
每个TextView必须在xml中设置以下属性:

android:onClick="onClick"
android:clickable="true"
编辑:

我仍然不知道活动在哪里实现OnclickListener,如果您打算这样做的话

public class MainActivity extends Activity implements OnclickListener {


    protected void onClick(View view) {
        // borrowed from @Sam
        Intent intent;

        switch(v.getId()) {
            case R.id.serve: // R.id.textView1
                intent = new Intent(this, Second.class);
                break;
            case R.id.complain: // R.id.textView2
                intent = new Intent(this, Third.class);
                break;
            case R.id.feed: // R.id.textView3
                intent = new Intent();
            }

            startActivity(intent);
    }

}

是的,但是你想在“下一页”上显示什么?代码在哪里?这是第二件事…重要的是这个xml文件,甚至是d java文件…我在java文件中使用了适当的函数,如服务、投诉和馈送..onClick将转到这些java文件:)你能说得更具体一点吗?不工作不会告诉我太多。它是抛出错误还是没有响应触摸事件,或者…我在屏幕上看到所有的文本视图,但它们没有响应触摸。它没有显示任何错误…查看我的答案…在你的活动中没有看到任何代码告诉文本视图响应触摸事件。是的,但是什么你想在“下一页”上显示吗?代码在哪里?这是第二件事…重要的是这个xml文件,甚至是d java文件…我在java文件中使用了适当的函数,如服务、投诉和馈送..onClick将转到这些java文件:)你能更具体一点吗?不工作并不能告诉我太多。是抛出错误还是没有响应触摸事件,或者…我在屏幕上看到所有文本视图,但它们没有响应触摸。它没有显示任何错误…请看我的答案。。。在您的活动中没有看到任何告诉文本视图响应触摸事件的代码。OP的
OnClickListeners
被称为
service
complaint
feed
,并清楚地显示在问题中发布的代码中。问题纯粹在于默认情况下,
TextView
是不可点击的-Sam已经回答了这个问题。不需要使用intent??public void service(View v){intent i=new intent();i.setClass(this,Second.class);startActivity(i);}@shrya:只需要添加
android:clickable=“true”
到您的
文本视图
,您现有的代码应该可以工作。Sam在他的回答中已经回答了这个问题。OP的
OnClickListeners
被称为
service
complaint
feed
,并且在问题中张贴的代码中清楚地显示出来。问题纯粹在于默认情况下,
TextView
是不可点击的-Sam已经回答了这个问题。不需要使用intent??public void service(View v){intent i=new intent();i.setClass(this,Second.class);startActivity(i);}@shrya:只需要添加
android:clickable=“true”
到您的
文本视图
,您现有的代码应该可以工作。萨姆在他的回答中已经回答了这个问题。