Необходимо обработать щелчок из класса NON-Activity (.java)
У меня есть один основной класс активности, который содержит огромное количество кода/данных. Поэтому я хочу сделать его коротким и читаемым, поэтому я хочу создать один .java файл, который обрабатывает некоторые функции в соответствии с требованием. Как
Button b=(Button)findviewById(R.id.b1);
b.setOnClickListener(this);
и показать тост из класса неактивности.
Итак, мой вопрос: как обрабатывать/инициализировать кнопку в неактивности?
Можем ли мы получить идентификатор из "Передача контекста" из "Активность" в класс неактивности?
Ответы
Ответ 1
Попробуйте работать для меня. Также может помочь вам!
NonActivityClass:
public class NonActivityClass {
Context context;
View v;
public NonActivityClass(Context context, View v) {
this.context = context;
this.v = v;
}
public void test() {
Button btn = (Button) v.findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "Hello I am inside Non Activity Class",
1).show();
}
});
}
}
MainActivity:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View v = getLayoutInflater().inflate(R.layout.activity_main, null);
setContentView(v);
NonActivityClass nac = new NonActivityClass(MainActivity.this, v);
nac.test();
}
}
Ответ 2
Да, вы можете сделать это, реализовав OnClickListener в своем другом классе Java и назовите это в своем классе активности, для этого сделайте вот это
Button b=(Button)findviewById(R.id.b1);
b.setOnClickListener(new NonActivityClass(this));
Мы передаем контекст активности в NonActivityClass, это позволит вам получить доступ к вашему компоненту пользовательского интерфейса в NonActivityClass, но помните, что это может привести к утечке памяти;
И реализовать OnClickListener как:
public class NonActivityClass implements OnClickListener
{
void onClick(View oView)
{
// Do your stuff here
}
}
Ответ 3
Вы можете просто реализовать свой onclick-прослушиватель в своем основном классе, но используйте интерфейс для экстернализации содержимого слушателя в другом классе.
Пример:
Создайте класс ManageClick.java, содержащий конструктор, несколько методов и объектов.
Атрибут
public OnClickListenerCustom _onClickListenerCustom;
И интерфейс
Interface OnClickListenerCustom{
public void onclick();
public void onItemClick();
}
и другой метод, например setOnClickListenerCustom:
public void setOnClickListenerCustom(OnClickListenerCustom listener){
this._onClickListenerCustom = listener;
}
В вашем основном классе MainActivity.java вы реализуете метод onclick(), в oncreate вы устанавливаете слушателя:
public ManageClick _clickManager;
_clickManager = new ManageClick();
_clickManager.setOnClickListener((OnClickListenerCustom) this.MainActivity);
Чтобы закончить метод onclick, вам нужно только позвонить
_clickManager.onClick() or _clickManager.onItemClick()