Eclipse, Android, 2.2, Попытка передать данные между Деятельностями и затем поместить данные в намерение электронной почты - PullRequest
0 голосов
/ 28 мая 2011

Я пытаюсь передать данные из упражнения B обратно в мероприятие A, а затем с помощью кнопки с намерением отправить электронное письмо (в упражнении A). Я хочу добавить данные из занятия B в текст электронного письма. это то, что я до сих пор:

Деятельность B

    String fireinvolvedsave;
EditText FIinvolvedtext;        

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.firescreen);

    FIinvolvedtext = (EditText) findViewById(R.id.FIinvolvedtext);
    fireinvolvedsave = FIinvolvedtext.getText().toString();

    Intent pass = new Intent(getApplicationContext(), Main.class);

    pass.putExtra("Involved", fireinvolvedsave);
    startActivity(pass);

Задание A

    public void onClick(View v) {
    switch(v.getId()){
    case R.id.EmailStart:
        Bundle extras = getIntent().getExtras(); 
        if(extras !=null) {}
        Intent EmailSend = new Intent(android.content.Intent.ACTION_SEND);
        EmailSend.setType("plain/text");
        EmailSend.putExtra(Intent.EXTRA_SUBJECT, "Fire");
        EmailSend.putExtra(android.content.Intent.EXTRA_TEXT,

                "Involved: "+extras.getString("Involved"));


    break;}}}

Когда я запускаю это на своем устройстве (HTC EVO 2.2), электронная почта появляется правильно; однако данных из EditText (FIinvolvedtext) нет. Может ли кто-нибудь помочь мне понять, чего мне не хватает?

1 Ответ

1 голос
/ 28 мая 2011

Ладно, у тебя уже почти есть ответ.

Я считаю, что проблема заключается в том, где вы намерены искать дополнения.мой пример ниже работает отлично.

Имейте в виду, что добавление FLAG_SINGLE_TOP к цели - это способ убедиться, что второе полученное вами действие не является повторным выпуском уже существующего, а Act2.class имеет свой режим запускадля AndroidManifest.xml) установлено значение singleTop.

public class Main extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        button.setOnClickListener( new OnClickListener(
             @Override
             public void onClick(View v){
                 startActivity(new Intent(this, Act2.class).putExtra("passed", "Here is the passed text").addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP));
             }
        );
    }
}

и второе действие

public class Act2 extends Activity {
    @Override
    protected void onResume() {
        super.onResume();
        Intent i = getIntent();
        if(i.getExtras()!=null && i.getExtras().containsKey("passed")){
            Intent sendEmail = new Intent(android.content.Intent.ACTION_SEND);
            sendEmail.setType("plain/text");
            sendEmail.putExtra(Intent.EXTRA_SUBJECT, "Passing Data");
            sendEmail.putExtra(android.content.Intent.EXTRA_TEXT,
                "Passed Data: "+ i.getExtras().getString("passed"));
            startActivity(Intent.createChooser(sendEmail, "Send mail..."));
        }
    }
}

. Все это прекрасно работает.Надеюсь, что это отвечает на ваш вопрос.

...