मेरी परियोजना में मेरे पास गतिविधि ए है जिसमें एक सूची है। मैंने सूची एडेप्टर (onBindViewHolder) में onClickListener को सेट किया है कि प्रत्येक आइटम पर क्लिक करके, गतिविधि B शुरू की जा रही है (startActivityforResult)। फिर गतिविधि BI में मैंने सेट किया है (RESULT_OK) लेकिन गतिविधि A में हमेशा RESULT_CANCELL प्राप्त होता है।

यहाँ मेरा एडेप्टर कोड है:

        holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context,TicketActivity.class);
            intent.putExtra("ticketID",tickets.get(position).getId());
            intent.putExtra("ticketStatus",tickets.get(position).getStatus());
            activity.startActivityForResult(intent,NEW_TICKET_MESSAGE_CODE);
        }
    });

यहां गतिविधि बी है जब मैं परिणाम को ठीक के रूप में सेट करता हूं।

    @Override
public void onBackPressed() {
    super.onBackPressed();
    if(hasNewMessage) {
        setResult(RESULT_OK);
        finish();
    }else{
        setResult(RESULT_CANCELED);
    }
    finish();

}

मुझे यकीन है कि hasNewMessage सच है। और यहां गतिविधि बी है जहां मैं परिणाम की जांच करता हूं:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == NEW_TICKET_REQUEST) {
        if (resultCode == RESULT_OK) {
            recreate();
        }

    } if (requestCode == NEW_TICKET_MESSAGE_CODE) {
        if (resultCode == RESULT_OK){
            recreate();
        }
    }
}

लेकिन कोड NEW_TICKET_MESSAGE_CODE के साथ अनुरोध हमेशा RESULT_CANCEL मिलता है क्यों?!

0
Artin GH 13 अक्टूबर 2018, 16:37

1 उत्तर

सबसे बढ़िया उत्तर

super.onBackPressed(); लाइन हटाएं

आपका तरीका इसे पसंद करना चाहिए

@Override
public void onBackPressed() {
    if(hasNewMessage) {
         setResult(RESULT_OK);
         finish();
    }else{
         setResult(RESULT_CANCELED);
         finish();
    }

}
1
Radesh 13 अक्टूबर 2018, 13:57