2014-01-25 83 views
0

Fellas,我一直在撓頭,試圖在TextView上實現一個相當簡單的onClick動作,但沒有成功。這裏是我的代碼:Android onClick Action

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> 

我的目標是能夠調用performClick()方法被點擊TextView的時候。有什麼建議麼?

回答

1

TextView添加android:clickable="true"在XML

和@阿爾塔夫在他的回答中提到,刪除監聽。 只要有,

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

+0

謝謝droidx。我很欣賞 – user2251344

+0

你歡迎@ user2251344。如果您發現ans有用,請投票:-)哦,謝謝您已經這麼做了 – droidx

0

刪除監聽

tvNextOkin.setOnClickListener(new OnClickListener() {} 

你只需要performClick方法

0

你應該在的onCreate註冊您的onClick監聽器()。 您可以參考Android SDK文檔。

0

在XML中添加本作的TextView

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

,並藉此在操作的onclick

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

好的,Aravinth!的確我忘了在我的xml中添加android:clickable =「true」。 – user2251344

+0

@ user2251344歡迎... – Aravin

0

我看到了你的問題。

當你設置android:onClick =「performClick」,這意味着,當用戶點擊TextView時,方法performClick將被調用。

在這種方法操作:將onClickListener爲tvNextOkin

它不顯示任何對話框。 :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方法。

希望這會幫助你。

Regards,