Il messaggio nell'eccezione è:
E/mpigio(582): java.lang.ClassCastException: android.app.Application
Un problema sul cast
Il messaggio nell'eccezione è:
E/mpigio(582): java.lang.ClassCastException: android.app.Application
Un problema sul cast
Prova ad usare getApplication() al posto di getApplicationContex().
Fammi sapere
Inviato dal mio HTC Desire usando Androidiani App
ciao, sono riuscito a fare quello che chiedevi cosi:
Codice dell'activity che estende TabActivity
codice:package tab.example; import android.app.TabActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TabHost; import android.widget.TextView; import android.widget.Toast; import android.widget.TabHost.TabSpec; public class TabExampleActivity extends TabActivity { public static String str1; public static String str2; public static String str3; public static String str4; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tab); /** TabHost will have Tabs */ TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost); /** TabSpec used to create a new tab. * By using TabSpec only we can able to setContent to the tab. * By using TabSpec setIndicator() we can set name to tab. */ /** tid1 is firstTabSpec Id. Its used to access outside. */ TabSpec firstTabSpec = tabHost.newTabSpec("tid1"); TabSpec secondTabSpec = tabHost.newTabSpec("tid1"); TabSpec thirdTabSpec = tabHost.newTabSpec("tid1"); /** TabSpec setIndicator() is used to set name for the tab. */ /** TabSpec setContent() is used to set content for a particular tab. */ firstTabSpec.setIndicator("First Tab Name").setContent(new Intent(this,FirstTab.class)); secondTabSpec.setIndicator("Second Tab Name").setContent(new Intent(this,SecondTab.class)); thirdTabSpec.setIndicator("Third Tab Name").setContent(new Intent(this,ThirdTab.class)); /** Add tabSpec to the TabHost to display. */ tabHost.addTab(firstTabSpec); tabHost.addTab(secondTabSpec); tabHost.addTab(thirdTabSpec); } }
Codice activity primo tab
codice:package tab.example; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class FirstTab extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first); final TextView txt1 = (TextView)this.findViewById(R.id.txt1); final TextView txt2 = (TextView)this.findViewById(R.id.txt2); final TextView txt3 = (TextView)this.findViewById(R.id.txt3); final TextView txt4 = (TextView)this.findViewById(R.id.txt4); Button saveButton = (Button)this.findViewById(R.id.btn1); saveButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { txt1.setText(TabExampleActivity.str1); txt2.setText(TabExampleActivity.str2); txt3.setText(TabExampleActivity.str3); txt4.setText(TabExampleActivity.str4); } }); } }
Codice activity secondo tab
codice:package tab.example; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class SecondTab extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); final EditText edit1 = (EditText) findViewById(R.id.edit_txt1); final EditText edit2 = (EditText) findViewById(R.id.edit_txt2); Button saveBtn = (Button)this.findViewById(R.id.btn1); saveBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { TabExampleActivity.str1 = edit1.getText().toString(); TabExampleActivity.str2 = edit2.getText().toString(); } });
Codice activity terzo tab
codice:package tab.example; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class ThirdTab extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.third); final EditText edit1 = (EditText) findViewById(R.id.edit_txt1); final EditText edit2 = (EditText) findViewById(R.id.edit_txt2); Button saveBtn = (Button)this.findViewById(R.id.btn1); saveBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { TabExampleActivity.str3 = edit1.getText().toString(); TabExampleActivity.str4 = edit2.getText().toString(); } }); } }
Praticamente nel secondo e terzo tab inserisci i dati e li salvi, e nel primo li visualizzi in delle textview, logicamente all'occorrenza le puoi inviare ad un DB o quello che sarà, se ce qualcosa poco chiaro scrivi!
PS: alla fine non era necessario né usare gli intent né estendere Application
Scusami avevo la pagina in cache, ma il mio problema è che il bottone salva è nel tabhost (nel contenitore dei tab), perchè le informazioni di questo oggetto sono visualizzate su diversi tab ma ovviamente devo salvarli con un solo tap.
Ad esempio come raggiungo l'oggetto edit1 dal tabhost per poterne salvare il contenuto? edit1.getText().toString();
hai provato il mio codice?? nelle activity con le info di persona hai un tasto salva e nella prima ne hai uno che tele visualizza/quello che vuoi farci.. non capisco il tuo problema mi sa..
cmq i bottoni non li metti nel tabhost, quello serve solo a creare le tab.. i bottoni vanno nelle activity delle singole tab..
Ho messo bottone su un header sopra il tabhost x renderlo sempre visibile perché il salvataggio va fatto una volta. Se lo mettessi nel primo tab dovrei tornare sempre li x salvare tutto e in ogni caso il problema rimarrebbe perché se non ho capito male in ogni tab serve un bottone x copiare le info nella classe che hai creato ma questo lo vorrei fare con un unico tap e non uno x ogni tab.
Inviato dal mio GT-I9100 usando [URL=http://il-bu.ch/androidianiapp]Androidiani
Person.xml
personinfo.xml (Primo tab)codice:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#FFEFFFDF"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="10dip" android:paddingBottom="10dip"> <TableRow> <Button android:id="@+id/btnHome" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FFFFFFFF" android:paddingTop="5dip" android:onClick="home" android:drawableTop="@drawable/logo" android:paddingLeft="10dip"/> <TextView android:id="@+id/txtTitle" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="50" android:gravity="left|center_vertical" android:padding="10dip" android:textColor="#FF000000" android:text="@string/person" /> <Button android:id="@+id/btnSave" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="right" android:background="@drawable/background" android:onClick="save" android:padding="10dip" android:text="@string/save"/> </TableRow> </TableLayout> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFEFFFDF"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5dp"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="0dp" /> </LinearLayout> </TabHost> </LinearLayout>
Poi una seconda activity simile (per un altro tab) con altri dati.codice:<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:background="#FFEFFFDF" xmlns:android="http://schemas.android.com/apk/res/android"> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#d7d7d7"> <LinearLayout android:id="@+id/layoutForScroll" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/editName" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/routes" android:inputType="text"/> <Spinner android:id="@+id/spinnerTipology" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt="@string/person_tip"/> <ToggleButton android:id="@+id/toggleShared" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/shared" /> <EditText android:id="@+id/editPresentation" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="0.60" android:inputType="textShortMessage" android:text="@string/presentazione" android:gravity="top"/> <EditText android:id="@+id/editDescription" android:layout_width="fill_parent" android:layout_height="100dip" android:gravity="clip_vertical" android:lines="5" android:inputType="" android:hint="@string/descrizione" /> <TextView android:id="@+id/txtAuthor" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textPersonName" android:text="@string/author"/> </LinearLayout> </ScrollView> </LinearLayout>
Da questo <Button android:id="@+id/btnSave"....
vorrei prendere i dati nelle singole activity e salvare su DB o cmq aggiornare la classe person come hai indicato anche tu.
Spero di essermi spiegato meglio
Grazie!