2012-02-17 55 views
1

我有一個問題...我有不同的聽文字textviews。像這樣的人:Android:OnClicklistener

help_modul.setOnClickListener(this); 
    help_timetable.setOnClickListener(this); 
    help_credits.setOnClickListener(this); 
    help_todo.setOnClickListener(this); 

這裏是我的聽衆:

@Override 
public void onClick(View v) { 

String temp= v.getId(); // DOESNT WORK 
Toast.makeText(this, temp, Toast.LENGTH_LONG).show(); 

} 

在我的聽衆我希望我的TextView之間不同....例如點擊文本字段「一」做到這一點,如果點擊另一個文本框做另一種操作..

你有什麼建議嗎?

+0

的TextView(或)的EditText? – kosa 2012-02-17 21:04:01

+0

我的意思是TextView – JavaNullPointer 2012-02-17 21:06:12

回答

5

嘗試是這樣的:

@Override 
public void onClick(View v) { 

switch (v.getId()) { 
     case R.id.textview1: 
     doSomething1(); 
     break; 
     case R.id.textview2 
     doSomething2(); 
     break; 
    } 
} 
+0

+1這個答案,它更有用。 – ocanal 2012-02-17 21:08:46

+0

非常感謝...它的工作原理! – JavaNullPointer 2012-02-17 22:02:26

+0

@ user1197351很高興:)如果這是你正在尋找的東西,如果你可以將答案標記爲正確的話,那將是非常好的:) – Sid 2012-02-17 22:29:08

2

你可以 一)使InstanceListeners如:

TextView(context).setOnClickListener(new OnClickListener() { 
    @Override public void onClick(View view) { 
     // ... 
     Log.d(TAG, "I'm doing stuff"); 
    } 
} 

,或者你可以 b)檢查您的TextView的實例:

@Override public void onClick(View view) { 
    if (view == mGirlTextView) { 
     // Do Stuff 
     Log.d(TAG, "I'm Forever alone"); 
    } else if (view == mBoyTextView) { 
     // Do moar stuff 
     Log.d(TAG, "Let's grab a beer"); 
    } 
} 
+0

非常感謝...它的工作原理! – JavaNullPointer 2012-02-17 22:02:13

0

使用開關盒

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.help_modul: 
     // do code 
     break; 
    case R.id.help_timetable: 
     // do code 
     break; 
    case R.id.help_credits: 
     // do code 
     break; 
    case R.id.help_todo: 
     // do code 
     break; 
    } 

} 
+0

很好,謝謝...它有效! – JavaNullPointer 2012-02-17 22:02:03

0

在這份聲明中String temp= v.getId(); // DOESNT WORK你得到的看法是數據類型long,然後分配給String變量,這可能是正確的ID,但它是不錯的辦法。

使用此改進的代碼instread

@Override 
public void onClick(View v) { 
    if(v.getId() == help_modul.getId()) 
    { 
     /*do some work on the click*/ 
    } 
    else if(v.getId() == help_timetable.getId()) 
    { 
     /*do some work on the click*/ 
    } 
    else if(v.getId() == help_credits.getId()) 
    { 
     /*do some work on the click*/ 
    } 
    else if(v.getId() == help_todo.getId()) 
    { 
     /*do some work on the click*/ 
    } 
}