Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Absturz bei Tablayout

Das Thema "Absturz bei Tablayout" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 18.01.2012, 19:42   #1 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 18.12.2011
Beiträge: 77
Abgegebene Danke: 10
Erhielt 9 Danke für 6 Beiträge
Standard Absturz bei Tablayout

Moin. Ich hab ein TabLayout mit je drei Tabs, die im Prinzip alle gleich aussehen. Diese Tabs enthalten je eine ListActivity mit Elementen die wiederum jeweils auf eine DummyActivity verlinken (sol leine Navigation für SubApps werden mit Favoriten etc).
Das klappt beim ersten Tab auch wunderprächtig. Beim zweiten und dritten Tab habe ich aber das Problem, dass wenn ich von der Dummy-Activity wieder zurück gehe, dass dann die App abstürzt.


Hier mal das Tablayout
Code:
public class TabLayoutActivity extends TabActivity {
    /** Called when the activity is first created. */
	private SharedPreferences preferences;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {    	    	
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
    @Override
    public void onResume() {
    	//Toast.makeText(this.getBaseContext(), "test", Toast.LENGTH_LONG).show();
        this.preferences =  SettingsActivity.getPreferences(this);
        
        Resources res = getResources(); // Resource object to get Drawables
        TabHost tabHost = getTabHost();  // The activity TabHost       
        TabHost.TabSpec spec;  // Resusable TabSpec for each tab
        Intent intent;  // Reusable Intent for each tab

        
        tabHost.clearAllTabs();
        
        // Create an Intent to launch an Activity for the tab (to be reused)
        intent = new Intent().setClass(this, FavoritesActivity.class);

        // Initialize a TabSpec for each tab and add it to the TabHost
        spec = tabHost.newTabSpec("Favorites").setIndicator(this.getString(R.string.favorites),
                          res.getDrawable(R.drawable.ic_tab_favorites)).setContent(intent);
        tabHost.addTab(spec); // <------ Zeile 44: Hier knallts
        
        // Do the same for the other tabs
        intent = new Intent().setClass(this, OptionalActivity.class);
        spec = tabHost.newTabSpec("Optional").setIndicator(this.getString(R.string.optional),
                res.getDrawable(R.drawable.ic_tab_optional)).setContent(intent);
        tabHost.addTab(spec);
        
        //Display the hidden apps only if activated in settings
        if (this.preferences.getBoolean("display_hidden_apps", true)) {
	        intent = new Intent().setClass(this, HiddenActivity.class);
	        spec = tabHost.newTabSpec("hidden").setIndicator(this.getString(R.string.hidden),
	                          res.getDrawable(R.drawable.ic_tab_hidden)).setContent(intent);
	        tabHost.addTab(spec);
        }

        //Setting the start tab
        tabHost.setCurrentTab(0);
    	
    	super.onResume();
    }
    
    public boolean onCreateOptionsMenu(android.view.Menu menu) {
    	getMenuInflater().inflate(R.menu.tab_layout_menu, menu);
    	return super.onCreateOptionsMenu(menu);
    }      
    
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.settings:
			Intent intent = new Intent(this, SettingsActivity.class);
			startActivity(intent);
			return true;
		default:
			return super.onOptionsItemSelected(item);
			
		}
	}        
}


Hier die ListActivity (sieht bei allen Tabs gleich aus)
Code:
public class FavoritesActivity extends ListActivity {
	private FlatNavigation navigation;	
	
    /** Called when the activity is first created. */
    @Override    
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
    }
    

    @Override
    public void onResume(){
    	
    	this.navigation = NavigationConfigurator.initializeNavigation();   	
    	setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, this.navigation.getNavCollection(ViewType.FAVORITE).getSubAppsNames()));

        ListView lv = getListView();
        lv.setTextFilterEnabled(true);

        AppSelectedListener listener = new AppSelectedListener(this, navigation);                
        lv.setOnItemClickListener(listener);
    	super.onResume();
    } 
}
Und hier der Dummy:
Code:
public class SubAppDummyActivitiy extends Activity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dummy);
        
        TextView textview = new TextView(this);
        textview.setText("Dummy");
        setContentView(textview);        
    }
}

Es knallt in der onResume() bei der Zeile wo ich einen neuen Tabb hinzufüge:
tabHost.addTab(spec);

Hier mal die komplette Fehlermeldung:
Zitat:
01-18 19:33:15.105: E/AndroidRuntime(24031): FATAL EXCEPTION: main
01-18 19:33:15.105: E/AndroidRuntime(24031): java.lang.RuntimeException: Unable to resume activity {net.remmel.ipu/net.remmel.ipu.TabLayoutActivity}: java.lang.NullPointerException
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.app.ActivityThread.performResumeActivity(A ctivityThread.java:2124)
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.app.ActivityThread.handleResumeActivity(Ac tivityThread.java:2139)
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:961)
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.os.Handler.dispatchMessage(Handler.java:99 )
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.os.Looper.loop(Looper.java:130)
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.app.ActivityThread.main(ActivityThread.jav a:3691)
01-18 19:33:15.105: E/AndroidRuntime(24031): at java.lang.reflect.Method.invokeNative(Native Method)
01-18 19:33:15.105: E/AndroidRuntime(24031): at java.lang.reflect.Method.invoke(Method.java:507)
01-18 19:33:15.105: E/AndroidRuntime(24031): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:907)
01-18 19:33:15.105: E/AndroidRuntime(24031): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:665)
01-18 19:33:15.105: E/AndroidRuntime(24031): at dalvik.system.NativeStart.main(Native Method)
01-18 19:33:15.105: E/AndroidRuntime(24031): Caused by: java.lang.NullPointerException
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.widget.TabWidget.setCurrentTab(TabWidget.j ava:342)
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.widget.TabWidget.focusCurrentTab(TabWidget .java:366)
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.widget.TabHost.setCurrentTab(TabHost.java: 335)
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.widget.TabHost.addTab(TabHost.java:226)
01-18 19:33:15.105: E/AndroidRuntime(24031): at net.remmel.ipu.TabLayoutActivity.onResume(TabLayoutActivity.java :44)
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.app.Instrumentation.callActivityOnResume(I nstrumentation.java:1150)
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.app.Activity.performResume(Activity.java:3 858)
01-18 19:33:15.105: E/AndroidRuntime(24031): at android.app.ActivityThread.performResumeActivity(A ctivityThread.java:2114)
01-18 19:33:15.105: E/AndroidRuntime(24031): ... 10 more

Da man die Apps in den Tabs auch umsortieren kann (später), baue ich das Tablayout in der OneResume() auf und lösche mit tabHost.clearAllTabs() alle Tabs.
Ich vermute mal, dass da der Fehler liegt. Weil wenn ich das in die onCreate() packe klappt es...

Vielen Dank
Gruß, Dave
D@ve ist offline   Mit Zitat antworten
Alt 19.01.2012, 09:26   #2 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 18.12.2011
Beiträge: 77
Abgegebene Danke: 10
Erhielt 9 Danke für 6 Beiträge
Standard AW: Absturz bei Tablayout

Hmmm Lösung war recht einfach (hat aber viel Zeit gekostet).

Einfach vor das clearAllTabs() noch ein setCurrentTab(0). Dann geht's...
D@ve ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Absturz bei Verbindungsabriss Comet Samsung Galaxy S SCL (I9003) Forum 0 29.10.2011 14:10
Absturz bei Recovery dafrocka HTC Wildfire S Forum 1 20.06.2011 19:02
TabLayout ohne Grafiken Flixius Android App Entwicklung 2 13.06.2011 21:29
Winamp: Absturz bei Synchronisationsversuch Rosa Elefant Sonstige Apps & Widgets 0 27.04.2011 15:35
TabLayout onBackPressed() Sabian Android App Entwicklung 0 21.01.2011 17:06




Du liest gerade: "Absturz bei Tablayout" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.