Reputation: 27
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
Reputation: 7936
Try using like below:
activity.setResult(RESULT_OK, return_intent);
activity.finish();
Upvotes: 1