Ciao a tutti. ho un problema con un tablayout e con la rotazione dello schermo.
Mi spiego meglio. Nel mio tablayout ad ogni tab corrisponde un intent per fare partire un'activity differente.
Prima di implementare il tablayout avevo impostato il metodo onconfigurationChanged in ogni activity e tutto funzionava correttamente.
Adesso, però, durante la rotazione dello schermo è solo l'activity esterna che ne risente in quanto quella interna viene ricreata (le activity all'interno del tab non si accorgono che lo schermo sia ruotato)
Io ho "risolto" con un piccolo trucco, in pratica nel metodo oncreate dell'activity(quella dentro il tab) ho impostato
if(myApp.getActivity2()==false){//controllo se è la prima volta che parte l'activity
myApp.setActivity2(true);
try{
Log.e("Activity2 ","Oncreate");
username=myApp.getUsername();
host_tre=myApp.getHostTre();
sid=myApp.getSid();
seq=myApp.getSeq();
base_url=myApp.getBaseUrl();
}catch(Exception e){Log.e("Recupero dati",e.toString());}
Log.e("Activity2","Dopo avere recuperato l'intent");
try{
//sc.handshake();
// BackgroundWorker bw=new BackgroundWorker();
new BackgroundWorker().execute();
}catch(Exception e){Log.e("MOTIVO", e.toString());}
}
else //se l'activity era già stata avviata reimposto il layout senza ricreare tutto
setUpViews();Il problema che mi si pone è che durante la rotazione il BackgroundWorker (mi serve a scambiare dati con un server http) muore.
C'è qualche modo di fare avvertire all'activity dentro il tab che è ruotato lo schermo?
Posto il codice dell'activity con tablayout e l'xml
public class Tabs3 extends Activity {
LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false);
private static final String STATES_KEY = "android:states";
private Contact personal=new Contact("","",0,true); //Me stesso
private String username=null;
MyApplication myApp=MyApplication.getInstance();
Bundle states;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e("Tabs3 ","Oncreate");
try{setContentView(R.layout.tab);
}catch(Exception e){Log.e("Errore set content", e.toString());}
try{
Bundle states = savedInstanceState != null
? (Bundle) savedInstanceState.getBundle(STATES_KEY) : null;
mLocalActivityManager.dispatchCreate(states);
myApp.setBundle(states);
//Log.e("Tabs 3 onCreate States=",states.toString());
}catch(Exception e){Log.e("Errore on Create Tabs3",e.toString());}
Log.e("Tabs3","Ho recuperato l'intent");
try{
username=myApp.getUsername();
personal.setNickname(username);
//personal.setName(sid);
//et.append("Username ricavato="+username+"\n");
personal.setStatus("ONLINE");
TextView myname=(TextView)findViewById(R.id.MyName);
ImageView myim=(ImageView)findViewById(R.id.MyStatus);
myim.setBackgroundResource(personal.getImage());
myname.setText(username);
myname.setVisibility(0);
}catch(Exception e){Log.e("Errore: ",e.toString());}
//mLocalActivityManager.startActivity("asdas",new Intent(this, activity2.class) );
TabHost tabHost;
try{
// Otteniamo il riferimento al TabHost
tabHost = (TabHost) findViewById(R.id.myTabHost);
tabHost.setup(mLocalActivityManager);
// Aggiungiamo il Tab associato alla prima view
// tabHost.addTab(tabHost.newTabSpec("tabview1").setContent(new Intent(this, activity2.class)).setIndicator("sada"));
tabHost.addTab(tabHost.newTabSpec("tab1")
.setIndicator("Contatti")
.setContent(new Intent(Tabs3.this, activity2.class)));
tabHost.addTab(tabHost.newTabSpec("Phone").setContent(R.id.tabview2).setIndicator("Phone"));
tabHost.addTab(tabHost.newTabSpec("Preferences").setContent(R.id.tabview3).setIndicator("Preferences"));
}catch(Exception e){Log.e("Motivo Errore Tabs3", e.toString());}
}<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent" android:layout_height="30dip">
<ImageView android:id="@+id/MyStatus" android:layout_width="10dip"
android:layout_height="15dip"></ImageView>
<TextView android:layout_marginLeft="10dip"
android:layout_toRightOf="@+id/MyStatus" android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/MyName" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:visibility="visible"></TextView>
</RelativeLayout>
<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myTabHost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/myLayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"></TabWidget>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@android:id/tabcontent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/tabview1">
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/tabview2">
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/tabview3">
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
</LinearLayout>Grazie