spyder3anz
spyder3anz

Reputation: 27

SetResult() not taking me back to first activity

so im using startActivityForResult() and SetResult to return the data back but when using set result() and finish() the activity just dies and doesnt go back to the first one...

In MainActivity class where startActivityForResult is..its an alarm activity since my app is an alarm/reminder, inside my class i have another class which is an adapter

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 startActivity(new Intent(MainActivity.this, AlarmChooser.class));
}
 public class AlarmAdapter extends ArrayAdapter<MyAlarm> {

    Activity activity;
    int layoutResource;
    MyAlarm alarm;
    ArrayList<MyAlarm> mData = new ArrayList<>();

            public AlarmAdapter(Activity act, int resource, ArrayList<MyAlarm> data) {
        super(act, resource, data);
        activity = act;
        layoutResource = resource;
        mData = data;
        notifyDataSetChanged();
    }

     @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View row = convertView;
        ViewHolder holder = null;
        if(row==null || row.getTag()==null){
            LayoutInflater inflater = LayoutInflater.from(activity);
            row = inflater.inflate(layoutResource,null);
            holder=new ViewHolder();

            holder.mTitle=(TextView)row.findViewById(R.id.name);
            holder.mDate=(TextView)row.findViewById(R.id.dateText);
            holder.mTime=(TextView)row.findViewById(R.id.timeText);

            row.setTag(holder);
        }else{
            holder = (ViewHolder)row.getTag();
        }



        holder.myAlarm = getItem(position);
        holder.mTitle.setText(holder.myAlarm.getTitle());
        holder.mDate.setText(holder.myAlarm.getMonth()+" "+holder.myAlarm.getDay()+", "+holder.myAlarm.getYear());






        final ViewHolder finalHolder = holder;
        holder.mTitle.setOnClickListener(new View.OnClickListener() {



            public void onClick(View view) {
  Cursor cursor = dba.getnameofAlarm(title);
                if (cursor.moveToFirst()) {
                    do {
                        String yearData = (cursor.getString(cursor.getColumnIndex(Constants.COLUMN_YEAR)));
                        String monthData=(cursor.getString(cursor.getColumnIndex(Constants.COLUMN_MONTH)));
                        String dayData=(cursor.getString(cursor.getColumnIndex(Constants.COLUMN_DAY)));
                        String hourData=(cursor.getString(cursor.getColumnIndex(Constants.COLUMN_HOUR)));
                        String minuteData=(cursor.getString(cursor.getColumnIndex(Constants.COLUMN_MINUTE)));
                        String titleData=(cursor.getString(cursor.getColumnIndex(Constants.COLUMN_NAME)));
                        String typeData = cursor.getString(cursor.getColumnIndex(Constants.COLUMN_TYPE));
                        Log.e("YEAR", yearData);
                        Log.e("MONTH",monthData);
                        Log.e("DAY",dayData);
                        Log.e("HOUR",hourData);
                        Log.e("MINUTE",minuteData);
                        Log.e("TITLE",titleData);
                        Log.e("TYPE",typeData);



                            Class next = null;

                            switch (typeData) {
                                case "TimeDateRem":
                                    next = TimeDateRem.class;
                                    break;
                        case "BirthdayRem":
                            next = BirthdayRem.class;
                            break;
                        case "HolidayReminderKuwait":
                            next = HolidayReminderKuwait.class;
                            break;
                        case "HolidayReminderLebanon":
                            next = HolidayReminderLebanon.class;
                            break;
                        case "HolidayReminderSaudiArabia":
                            next = HolidayReminderSaudiArabia.class;
                            break;
                        case "HolidayReminderUAE":
                            next = HolidayReminderUAE.class;
                            break;
                            }

                            if (next != null) {
                                Intent return_intent = new Intent(MainActivity.this, next);
                                return_intent.putExtra("alarm_title", titleData);
                                return_intent.putExtra("alarm_month", monthData);
                                return_intent.putExtra("alarm_year", yearData);
                                return_intent.putExtra("alarm_day", dayData);
                                return_intent.putExtra("alarm_hour", hourData);
                                return_intent.putExtra("alarm_minute", minuteData);
                                   next_intent.putExtra("alarm_content", contenttt);
                                return_intent.putExtra("FROM_ACTIVITY", "MainActivity");
                                setResult(RESULT_OK, return_intent);

    finish();
                            }



                    } while (cursor.moveToNext());
                    cursor.close();
                }


            }

        });

        return row;

}
    }

    class ViewHolder{


        MyAlarm myAlarm;
        TextView mTitle;
        TextView mDate;
        TextView mTime;
        TextView mContent;
        TextView mID;
    }
}

and this is my TimeDateRem where there is OnActivityResult

  private void setAlarm(Calendar targetCal) {



    info.setText("\n\n***\n"
            + "Alarm is set @ " + targetCal.getTime() + "\n"
            + "***\n");

    Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);


  //notification


    Intent alarmIIntent = new Intent(this, AlarmReceiver.class);
    PendingIntent pIntent = PendingIntent.getBroadcast(this, 0, alarmIIntent, PendingIntent.FLAG_UPDATE_CURRENT);


    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pIntent);


    Intent intent_ForResult = new Intent(TimeDateRem.this, MainActivity.class);

    intent_ForResult.putExtra("title", title.getText().toString().trim());
    intent_ForResult.putExtra("day", pickerDate.getDayOfMonth());
    intent_ForResult.putExtra("month", pickerDate.getMonth());
    intent_ForResult.putExtra("year", pickerDate.getYear());
    intent_ForResult.putExtra("hour", pickerTime.getCurrentHour());
    intent_ForResult.putExtra("minute", pickerTime.getCurrentMinute());
    intent_ForResult.putExtra("type", "TimeDateRem");

    startActivityForResult(intent_ForResult, REQUEST);
  }
        @Override
       protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == REQUEST) {
        if (resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            String previousActivity = extras.getString("FROM_ACTIVITY");


            if (previousActivity.equals("MainActivity")) {

                String titles = extras.getString("alarm_title");
                int year_intent = extras.getInt("alarm_year");
                int month_intent = extras.getInt("alarm_month");
                int day_intent = extras.getInt("alarm_day");
                int minute_intent = extras.getInt("alarm_minute");
                int hour_intent = extras.getInt("alarm_hour");


                String year = String.valueOf(year_intent);
                String month = String.valueOf(month_intent);
                String day = String.valueOf(day_intent);
                String minute = String.valueOf(minute_intent);
                String hour = String.valueOf(hour_intent);


                title.setText(titles);
                pickerTime.setCurrentHour(Integer.parseInt(hour));
                pickerTime.setCurrentMinute(Integer.parseInt(minute));
                pickerDate.init(
                        Integer.parseInt(year),
                        Integer.parseInt(month),
                        Integer.parseInt(day),
                        null
                );



            }
        }
    }
}

can someone just help me know why setResult isnt sending me back to my main activity?

Upvotes: 0

Views: 340

Answers (1)

Try using like below:

activity.setResult(RESULT_OK, return_intent);
activity.finish();

Upvotes: 1

Related Questions