Как передать значения между действиями - PullRequest
3 голосов
/ 17 января 2012

Я создал 3 действия: firstActivity, secondActivity и thirdActivity.

  1. firstActivity является основным видом деятельности.
  2. secondActivity будет работать только в том случае, если он получит SMS, а затем отправит сообщение на номер thirdActivity.

Я могу отправлять значения от secondActivity до thirdActivity, но я нене знаю, как передать значения от thirdActivity до firstActivity.Пожалуйста, посоветуйте мне, как мне это сделать.

Ответы [ 3 ]

1 голос
/ 18 января 2012

Всякий раз, когда у вас есть действие, вызванное для результата, как, например, в этом случае у вас третье действие, вы всегда можете использовать метод startActivityForResult вместо простого запуска действия. После того, как thirdActivity завершит свою обработку и хочет вернуть значение результата, он должен вызвать setResult и все.

Проблема с этим подходом заключается в том, что у вас есть вторая активность в середине. Это действительно необходимо?

1 голос
/ 17 января 2012

Существует несколько подходов к этому.

Можно использовать пользовательский класс приложения для хранения своего рода "глобальных значений" для всего вашего приложения.Таким образом, вы должны установить значения в firstActivity и использовать их в thirdActivity.

Взгляните на этот ТАК вопрос, чтобы узнать, как хранить глобальное состояние в приложениях Android.

0 голосов
/ 20 января 2012

Спасибо за вашу помощь.Теперь я могу передавать значения из ThirdActivity в FirstActivity, вот как я делаю.

ThirdActivity:

public class ThirdActivity extends Activity {

double value1, value2;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...

    value1 = Double.parseDouble(value1FromSecondActivity);
    value2 = Double.parseDouble(value2FromSecondActivity);      

    Intent intent = new Intent(this, FirstActivity.class);
    intent.putExtra("Value1", value1);
    intent.putExtra("Value2", value2);
    startActivity(intent);
    finish();
    }
} 

FirstActivity:

public class FirstActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...
}   

@Override
protected void onResume() {
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        dValue1 = extras.getDouble("Value1");
        dValue2 = extras.getDouble("Value2");
        Toast.makeText(getBaseContext(), dValue1 + " : " + dValue2, Toast.LENGTH_SHORT).show();
    }
    else {
        Toast.makeText(getBaseContext(), "Null", Toast.LENGTH_SHORT).show();
    }
    super.onResume();
    }
}
...