Android onClick Action

时间:2014-01-25 08:15:58

标签: android

Fellas,我一直在试图在TextView上实现一个相当简单的onClick操作,但没有成功。这是我的代码:

    public class AccountsActivity extends Activity {

    final Context context = this;

     private TextView tvNextOkin;


    /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        setContentView(R.layout.my_account);

        tvNextOkin = (TextView) findViewById(R.id.tv_acc_next_of_kin);
         tvNextOkin.setText("Not set. Tap here to add");
         tvNextOkin.setTextColor(Color.RED);

        }



        public void performClick(View view){
         Log.i("Action::", "clicked!!");

      // add  listener
      tvNextOkin.setOnClickListener(new OnClickListener() {

             @Override
             public void onClick(View arg0) {

                  // custom dialog
                final Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.custom_dialog);
                  dialog.setTitle("This is a custom dialog");

                     dialog.show();
         }


         });
     }

 }

这是xml布局:

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff" >

    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="2dp" >

     <TextView
      android:id="@+id/tv_acc_next_of_kin"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_marginTop="5dp"
      android:text="tap here to add"
      android:textColor="#000"
      android:textSize="14dp"
      android:onClick="performClick"
      android:typeface="sans" />

      </LinearLayout>

      </ScrollView>

我的目标是在单击textview时调用performClick()方法。有什么建议吗?

5 个答案:

答案 0 :(得分:1)

在{xml

中为android:clickable="true"添加TextView

并且@ Altaf在他的回答中提到,删除听众。 只是,

public void performClick(View view){
     Log.i("Action::", "clicked!!");

              // custom dialog
     final Dialog dialog = new Dialog(context);
     dialog.setContentView(R.layout.custom_dialog);
     dialog.setTitle("This is a custom dialog");

     dialog.show();
 }

或替代方法是删除android:onClick="onClick" 并在您的活动中为onClickListener实施TextView

答案 1 :(得分:0)

删除侦听器

tvNextOkin.setOnClickListener(new OnClickListener() {}

你只需要performClick方法

答案 2 :(得分:0)

你应该在onCreate()中注册你的onClick监听器。 您可以参考Android SDK文档。

答案 3 :(得分:0)

在xml中添加此文本以进行textview

android:onClick="onClick"
android:clickable="true"

并执行点击操作

public void onClick(View v) {
        ...
      }  

答案 4 :(得分:0)

我看到了你的问题。

当您设置 android:onClick =“performClick”时,这意味着,当用户单击TextView时,将调用方法performClick。

在此方法中将执行:为 tvNextOkin设置onClickListener

它没有显示任何对话框。 :d

解决方案:

<TextView
      android:id="@+id/tv_acc_next_of_kin"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_marginTop="5dp"
      android:text="tap here to add"
      android:textColor="#000"
      android:textSize="14dp"
      android:typeface="sans" />

tvNextOkin.setOnClickListener(new OnClickListener() {

             @Override
             public void onClick(View arg0) {

                  // custom dialog
                final Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.custom_dialog);
                  dialog.setTitle("This is a custom dialog");

                     dialog.show();
}

请勿将其置于 performClick 方法中。

希望这会对你有所帮助。

此致