ورود

View Full Version : مشکل در اجرای interface در هنگام touch



soroushp
دوشنبه 25 خرداد 1394, 08:19 صبح
سلام
یک interface به صورت زیر نوشتم :
public interface SListener{
public void clickReceive(String data);
}
بعد در کلاس زیر(SearchBarTools ) اونو set کردم :
private SListener sListener;

public void setsListener(SListener sListener) {
if (sListener != null) {
this.sListener = sListener;
this.sListener.clickReceive("Salam");
// onActivate();
// activate();
}
}
کلاسی که می خوام از اون استفاده کنم :
private SearchBarTools searchBarTools=new SearchBarTools(getContext());
searchShortcut.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
deActivate();
searchBarTools.setsListener(new SListener() {
@Override
public void clickReceive(String data) {
Log.i("data","data"+data);
searchBarTools.activate();
}
});
}
});
سوالم اینه که نحوه پیاده سازی درست هست؟ ؛ هدفم این هست که وقتی کاربر روی searchShortcut زد در کلاسه دیگه یک اتفاقی بیفته

tux-world
دوشنبه 25 خرداد 1394, 11:53 صبح
نوع فراخونیت درست نیست. این مثال رو ببین


FragmentMessagesList.setOnAllUnreadMessages(new FragmentMessagesList.IOnAllUnreadMessages() {
@Override public void onCount(int count) {
if (count != 0) {
UI.tv_message_count.setText(count + "");
UI.tv_message_count.setVisibility(View.VISIBLE);
} else {
UI.tv_message_count.setVisibility(View.INVISIBLE);
}
}
});

soroushp
دوشنبه 25 خرداد 1394, 17:03 عصر
ممنون ، فعلا مشکل حل نشده (تو یک حلقه میفته ) اگر تونستم حل کنم جوابشو قرار میدم

soroushp
چهارشنبه 27 خرداد 1394, 16:27 عصر
برای اینکار نیازی به استفاده از interface نیست بلکه باید از یک فیلد به همراه getter,setter استفاده کرد
تعریف فیلد مورد نظر در کلاس مربوطه :
private OnClickListener backButtonListener;

public void setBackButtonListener(OnClickListener backButtonListener)
{
this.backButtonListener=backButtonListener;
}
private OnClickListener getBackButtonListener()
{
return backButtonListener;
}
searchShortcut.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(getBackButtonListener()!=null)
{
backButtonListener.onClick(v);

}
}
});
جایی که باید استفاده بشه :
resultContainer.setBackButtonListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultContainer.deActivate();
searchBarTools.activate();

}
});
می خواستم دو اتفاق دو کلاسه مورد نظر بیفته که اینطوری در کلاس اصلی میفته