当前位置: 首页 > 知识库问答 >
问题:

SetResult()不会将我带回第一个活动

亢奇
2023-03-14

所以我使用starActivityForResult()和SetResult返回数据,但当使用set结果()和完成()时,活动就死了,不会回到第一个...

startActivityForResult所在的MainActivity类中..这是一个警报活动,因为我的应用程序是一个警报/提醒,在我的类中,我有另一个类,它是一个适配器

 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;
    }
}

这是我的TimeDateRem,这里有一个ActivityResult

  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
                );



            }
        }
    }
}

有人能告诉我为什么setResult不把我送回我的主活动吗?

共有1个答案

云凌
2023-03-14

尝试使用如下所示:

activity.setResult(RESULT_OK, return_intent);
activity.finish();
 类似资料:
  • 我有第一活动,它通过意图调用第二活动 在SecondActivity完成后,我希望SecondActivity向FirstActivity发送一些变量。然后调用finsih(),它将返回到第一个活动。如何使SecondActivity发送变量并在FirstActivity中获得结果?

  • 我在一个活动中有一个列表视图,在自定义适配器中有一个信息图标。当用户点击该信息按钮时,下一个活动将打开,当用户点击更新按钮时,在下一个活动中标记出勤率后,第二个活动应该完成,第一个活动列表视图应该更新。 我成功地做了什么:我已经成功地标记了出席情况并更改了listview的颜色,但我在关闭第二个活动并重新启动第一个活动后这样做了。通过这种方式,由于再次开始活动,listview会得到更新。 我无法

  • 活动1:我有一个图像视图,其中从相机和画廊拍摄的图像被设置,它工作正常。在这个活动中有一个右键单击按钮,它将重定向到第二个活动。 活动2:在这个活动中,我有四个选择 保存 活动3:从上述四个选项中,第三个活动相应地工作。现在我不知道如何将第一个活动中拍摄的图像传递给第三个活动。 我的努力:在从相机拍摄的第一张活动图片中: 在第二个活动SaveVia中: 在第三个名为“保存”的活动中:

  • 问题内容: 我目前正在尝试获取通过REST API调用获取的数据,将其解析为所需的信息,然后将该信息传递给新活动。我使用的是异步HTTP客户端从loopj.com为REST客户端,然后使用我下面的代码,并为当前和未来的活动,分别。 Eclipse不会为我的任何代码传递任何错误,但是当我尝试在模拟器中运行时,当新的活动/视图打开时,我什么也没得到(即白屏)。我尝试在REST CLIENT中使用其他U

  • 我有一个按钮和EditText值。我使用Intent将EditText值从Activity1发送到Activity2。 我在Activity2上使用来自Activity1的EditText值获得Datavalue,并在使用意图单击按钮后将新的Datavalue Activity2发送到Activity3。 我在Activity3页面上有一些数据价值。 如何让这起作用?

  • 次要活动(通过意图向主活动发送“endpoint”字符串): 主活动(从次要活动获取字符串): 在Fragment类上,我试图在TextView上显示数据: 如何修复它并将字符串从一个活动发送到另一个活动上的片段? 下面是XML: