Имеется ли возможность проверить какой intent пришёл в класс java?
имеется 2 и более класса: Adapter1 и Adapter2. и ещё один класс Activity1. Мне необходимо в классе Activity1 определить из какого класса (Adapter1 или Adapter2) пришёл Intent. Ниже показал методы с помощью который запускаю необходимый класс Класс Adapter1:
public void onClick(View view) {
Intent i = new Intent(context,Activity1.class);
i.putExtra(MyConstants.LIST_ITEM_INTENT, mainArray.get(getAdapterPosition()));
context.startActivity(i);
}
Класс Adapter2:
public void onClick(View view) {
Intent i = new Intent(context, Activity1.class);
i.putExtra(MyConstants.LIST_ITEM_INTENT_F, mainArray.get(getAdapterPosition()));
context.startActivity(i);
}
Класс Activity1:
private void getMyIntents(){
Intent i = getIntent();
if (i != null){
ListItem item = (ListItem) i.getSerializableExtra(MyConstants.LIST_ITEM_INTENT);
id = item.getId();
tvTitle.setText(item.getTitle());
tvDay.setText(Long.toString(item.getDays()));
tvBarcode.setText(item.getBarcode1());
tvDate.setText(item.getDatetime());
tvAmount.setText(item.getDisc());
tvMass.setText(item.getSelectionText());
}
}
Вот тут то мне и нужно знать откуда пришёл intent, если от adapter1 то использовать один ListItem а если от adapter2 то использовать другой ListItem2.
Ответы (1 шт):
Автор решения: Arty Morris
→ Ссылка
Вам необходимо сделать два разных интента, с одним общим названием. Например
Intent intent_timer_UI_main = new Intent("timer_UI_main");
Из первого класса вы делаете посылку
intent_timer_UI_main.putExtra("timer_UI_main", "timer_UI_1_class");
sendBroadcast(intent_timer_UI_main);
Из второго класса вы делаете посылку
intent_timer_UI_main.putExtra("timer_UI_main", "timer_UI_2_class");
sendBroadcast(intent_timer_UI_main);
Делаете слушатель в 3 классе
BroadcastReceiver broadcast_main_UI = null;
if (broadcast_main_UI == null) {
IntentFilter filter_broadcast_main_UI = new IntentFilter();
filter_broadcast_main_UI.addAction("timer_UI_main");
broadcast_main_UI = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("timer_UI_main")) {
switch (intent.getStringExtra("timer_UI_main")) {
case ("timer_UI_1_class"):
// получено из 1 класса
break;
case ("timer_UI_2_class"):
// получено из 2 класса
break;
}
}
}
};
registerReceiver(broadcast_main_UI, filter_broadcast_main_UI);
}
@Override
public void onPause() {
if (broadcast_main_UI != null) {
try {
unregisterReceiver(broadcast_main_UI);
broadcast_main_UI = null;
} catch (IllegalArgumentException e) {
}
}
super.onPause();
}