Spiegati meglio: tutti i metodi sono inseriti all'interno di una classe e non è possibile avere metodi dentro ad altri metodi. Quando tu, all'interno di un metodo, fai ad esempio:
public void onCreate(Bundle savedInstanceState) {
btn.setOnClickListener( new OnClickListener() {
... // Qui sei dentro ad una Anonymous Class non dentro al metodo onCreate()
});
}
stai definendo un metodo che non è dentro al metodo onCreate() bensì all'interno di una anonymous inner class (cioè proprio in una classe diversa).
Ma questo non ha nulla a che vedere con il savedInstanceState. Se vuoi accedere a qualcosa salvato nel savedInstanceState da dentro una anonymous class o, in generale, da dentro un altro metodo, la soluzione più semplice è anche la più banale: crea una variabile di istanza, valorizzala nel onCreate() prendendo il valore dal savedInstanceState e usa quella variabile nel metodo dove ti serve.
public class TuaActivity extends Activity {
...
private String miaVariabile
...
@Override
public void onCreate(Bundle savedInstanceState) {
if (savedInstanceState.containsKey("mioValore")) {
miaVariabile = savedInstanceState.getString("mioValore");
}
}
...
private void mioAltroMetodo() {
Log.d("TuaActivity.class", miaVariabile); // Loggo il valore che ho ricevuto nel onCreate()
}
...
}