Cambiar tema desde menu

D

Buenas! estoy haciendo una app y necesito cambiar el tema de la aplicación desde una de las opciones desde menú, únicamente quiero cambiar el background pero la app se me cierra y es imposible.

El código .java es el siguiente:

public class MainActivity extends Activity {

static int idTema=R.style.AppBaseTheme; //Tema por defecto

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setTheme(idTema);

@override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//MENUS
@override
public boolean onOptionsItemSelected(MenuItem item)
{

switch (item.getItemId())
{

case R.id.menu_verano:
idTema=R.style.TemaVerano;
MainActivity.this.finish();
startActivity(new Intent(MainActivity.this, MainActivity.this.getClass()));
return true;

default:
return super.onOptionsItemSelected(item);
}
}

y el codigo del theme.xml es el siguiente:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">

<style name="AppTheme" parent="@style/_AppTheme"/>

<style name="_AppTheme" parent="android:Theme.Light">

</style>

<style name="TemaVerano" parent="AppBaseTheme">

<item name="android:background">@drawable/fverano</item>

</style>

</resources>

Si alguien ve algo mal o puede ayudarme lo agradecería.

Daredevil

Emplea las etiquetas code para facilitar la lectura del código.

Pero podrías explicarme para qué haces esto:

MainActivity.this.finish();
startActivity(new Intent(MainActivity.this, MainActivity.this.getClass()));