Возврат значений из нескольких действий - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть приложение, в котором я хочу, чтобы два запускали одно из двух действий на основе нажатой кнопки, а затем возвращали определенные значения из вызванного действия. Я знаю, что должен использовать requestCode, чтобы проверить активность. Но в любом случае приложение предполагает, что первое действие называется. Вот часть моего кода в основном классе.

public void onClick(View v) {
    switch(v.getId())
    {
    case R.id.start:
        Intent i = new Intent(this, one.class);
        startActivityForResult(i, FIRST_CODE);
        break;      
    case R.id.qwe:
        Intent j = new Intent(this, two.class);
        startActivityForResult(j, SECOND_CODE);
        break;
    }

И позже,

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if(requestCode==FIRST_CODE)
    {
        if(resultCode==RESULT_OK)
        {
            min = Integer.parseInt(data.getStringExtra("minutes"));
            sec = Integer.parseInt(data.getStringExtra("seconds"));
            test1.setText(min + ":" + sec);
        }
    }
    else if(requestCode==SECOND_CODE)
    {
        if(resultCode==RESULT_OK)
        {
            runMin = Integer.parseInt(data.getStringExtra("minutes"));
            runSec = Integer.parseInt(data.getStringExtra("seconds"));
            test2.setText(runMin + ":" + sec);
        }
    }
}

В моих классах 'one' и 'two' это мой код:

        min = (EditText)findViewById(R.id.smin);
        sec = (EditText)findViewById(R.id.ssec);            
        String mtime, stime;        
        mtime = min.getText().toString();
        stime = sec.getText().toString();
        dat2 = new Intent();
        dat2.putExtra("minutes", mtime);
        dat2.putExtra("seconds", stime);
        setResult(RESULT_OK, dat2);
        finish();

Это одинаково в обоих классах. Это неправильно? Благодарю. :)

1 Ответ

0 голосов
/ 04 февраля 2012

приложение не предполагает, что вызвано первое действие.проверьте значение requestCode в onActivityResult(), зарегистрировав его, используйте Log.d("TAG",requestCode); в первой строке onActivityResult ();
это даст вам информацию о том, какое действие было вызвано (с каким кодом запроса) ...

Как данные вводятся в намерение в обеих операциях сравнения, и как они обрабатываются обратно в этом действии - это совсем другое дело ...

...