Premesso che sarebbe buona norma indicare la stringa di errore generata (usi Android Studio)?
Io farei così:
codice:
public class MainActivity extends Activity   {

    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.activity_main);

        final Button button = (Button) findViewById(R.id.form_button);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                // your handler code here

final EditText edit_name = (EditText)findViewById(R.id.edit_name);
           final EditText edit_lastname = (EditText)findViewById(R.id.edit_lastname);
           Intent form_intent = new Intent(getApplicationContext(), Form.class);
form_intent.putExtras("name", edit_name.getText().toString());
form_intent.putExtras("lastname", edit_lastname.getText().toString());
startActivity(form_intent);
            }
        });
    }
inoltre le dichiarazioni final sono superflue