The code is very simple.. Nothing great I am just trying to toast a message and for some reason the behavior is different in two cases.
Case 1 : This is working:
Here's the code:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.webopen);
TextView sometext = (TextView)findViewById(R.id.click);
sometext.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(getApplicationContext(), "Long click Working", Toast.LENGTH_LONG).show();
return false;
}
});
}
Case 2: Not working! I want to know the reason why it's not working
public class OnClick extends Activity implements OnLongClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webopen);
TextView sometext = (TextView) findViewById(R.id.click);
}
@Override
public boolean onLongClick(View v) {
switch (v.getId()) {
case R.id.click:
Toast.makeText(getApplicationContext(), "Long click enabled",
Toast.LENGTH_LONG).show();
// OR
// Something();
break;
default:
break;
}
return false;
}
public boolean Something() {
Toast.makeText(getApplicationContext(), "Long click enabled",
Toast.LENGTH_LONG).show();
return true;
}
}
There's nothing great about the code but I just want to know the reason for onLongClickListener not working.
Any suggestions will help ..:)
You are not setting the onLongClickListener
for someText
. You need to add this:
someText.setOnLongClickListener(this);
This line will attach the listener object to the TextView
Object. In the first case, you make the call to setOnLongClickListener
, which is why it works. In this instance, you are creating a new onLongClickListener
object in-line.
In the second example, your Activity
is inheriting OnLongClickListener
, which makes it an instance of that object. So to set the listener for someText
, pass the listener this
, which is a reference to the current class.