Имеется ли возможность проверить какой 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();
}
→ Ссылка