user291701
user291701

Reputation: 39681

Does startActivity() always call through to startActivityForResult()?

Does startActivity() always call through to startActivityForResult()? Example:

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

        Button btn = (Button)findViewById(R.id.btn);
        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent(
                    ActivityTest.this, ActivityFoo.class);
                startActivity(intent);
            }
        });
    }

    @Override
    public void startActivity(Intent intent) {
        Log.e("hi", "startActivity()");
        super.startActivity(intent);
    }

    @Override
    public void startActivityForResult(Intent intent, int requestCode) {
        Log.e("hi", "startActivityForResult()");
        super.startActivityForResult(intent, requestCode);
    }
}

Output:

startActivity()
startActivityForResult()

Thanks

Upvotes: 1

Views: 1367

Answers (1)

LuxuryMode
LuxuryMode

Reputation: 33741

Yes, because the source code for startActivityForResult() looks like this:

public void startActivity(Intent intent) {
        startActivityForResult(intent, -1);
    }

They wrote it this way to avoid duplicate code. The real implementation of starting an Activity is defined in startActivityForResult() and if the value of -1 is passed in, it simply ignores results.

Upvotes: 6

Related Questions