通过startActivityForResult重用两个活动的活动

时间:2012-01-25 12:08:03

标签: android android-activity

我有两个活动(ACT1和ACT2),并且都使用startActivityForResult(intent,0)调用另一个活动(ACT3)。我不是很奇怪,因为ACT1在他的方法onActivityResult中正确接收到了结果,但是ACT2没有。在这种情况下,不会触发onActivityResult。 ¿有一个原因,或者它是一个错误?

提前致谢!

p.s:添加了代码


public class ACT1 extends Activity
{
  .........


  @Override
  protected void onListItemClick(ListView l, View v, int position, long id)
  {
    ..........

    Intent intent = new Intent(this, ACT3.class);
    startActivityForResult(intent, 0);
  }

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

    Log.d(TAG, "ACT1: onActivityResult");

    this.finish();
  }
}

public class ACT2 extends Activity
{
.........


  @Override
  protected void onListItemClick(ListView l, View v, int position, long id)
  {
    ..........

    Intent intent = new Intent(this, ACT3.class);
    startActivityForResult(intent, 0);
  } 

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

    Log.d(TAG, "ACT2: onActivityResult");

    this.finish();
  } 
}

public class ACT3 extends Activity
{
.......


  @Override
  public void onClick(View v)
  {
    switch (v.getId())
    {
        case R.id.phaBtnAceptar:
            intent = new Intent();
            intent.putExtra("alarmTime", alarmTime);
            setResult(Activity.RESULT_OK, intent);

            finish();

            break;

        ........
    }
  }
}

这里设置闹钟的方法,调用ACT2(AlarmaListaActivity)

private static void asignarAlarma(Context ctx, String idLista, String nombreLista, long horaInicioAlarma)
{
    String idAlarma = DAOMarket.getInstance().insertarAlarma(idLista, nombreLista, "" + horaInicioAlarma, "0");

    Intent intent = new Intent(ctx, ACT2.class);
    intent.putExtra("idLista", idLista);
    intent.putExtra("nombreLista", nombreLista);
    intent.putExtra("horaInicioAlarma", horaInicioAlarma);

    PendingIntent mAlarmSender = PendingIntent.getActivity(ctx, Integer.parseInt(idAlarma), intent, PendingIntent.FLAG_UPDATE_CURRENT);

    AlarmManager am = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, horaInicioAlarma, mAlarmSender);
}

1 个答案:

答案 0 :(得分:0)

在act3中,尝试更改

intent = new Intent();

Intent intent = getIntent();
相关问题