1. Gingerbread, 16.02.2011 #1
    Gingerbread

    Gingerbread Threadstarter Android-Hilfe.de Mitglied

    Habe versucht weitere Activities zu einem Tab hinzuzufügen, so dass trotzdem im Header die Tab leiste noch angezeigt wird. Jedoch bekomme ich immer eine NullPointerException.

    Also mein TabHost ist in einer Activity deklariert und funktioniert auch.

    Aufrufen der ArchiveGroup: (FirstActivity)
    Code:
                           public void onClick(View v) {
    				// TODO Auto-generated method stub
    			
    				Intent i = new Intent(getApplicationContext(), ArchiveGroup.class);
    				i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    				View view = ArchiveGroup.group.getLocalActivityManager().startActivity("Show", i).getDecorView();
    				ArchiveGroup.group.setContentView(view);
    			}
    Inhalt der ArchiveGroup:
    Code:
    public class ArchiveGroup extends ActivityGroup {
    
        public static ArchiveGroup group;
        private ArrayList<View> history;
    
        
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            this.history = new ArrayList<View>();
            group = this;
            
            View view = getLocalActivityManager().startActivity("name", 
                    new Intent(this, SecondActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
            
            setContentView(view);
        }
        
       
    
    }
    Die Activity die angezeigt werden soll (SecondActivity.class) enthält nur ganz normalen Code. Die NullPointerException tritt auch schon vor dem aufruf auf, nämlich schon beim onClick in der FirstActivity.
    Wo liegt der Fehler?
     
  2. Mss, 17.02.2011 #2
    Mss

    Mss Android-Hilfe.de Mitglied

    Mit so wenigen Informationen zur Exception bzw. Code ist es schwierig zu sagen. Debugge den Code, dann siehst du auch wo genau die Exception auftritt.

    Ich vermute es liegt daran, dass der Zugriff auf group in OnClick die NullPointerException auslöst, da noch group zu diesem Zeitpunkt noch keine Instanz zugewiesen ist. :winki: Dies geschieht erst bei startActivity().
     
  3. Gingerbread, 20.02.2011 #3
    Gingerbread

    Gingerbread Threadstarter Android-Hilfe.de Mitglied

    Also das spuckt Logcat aus:

    java.lan.NullPointerException
    at [...].onClick(...)
    at android.view.View.performClick(View.java:2408)
    at android.view.View$PerformClick.run(View.java:8816)
    at android.os.Handler.handleCallback(Handler.java: 587)
    at android.os.Handler.dispatchMessage(Handler.java: 92)
    at android.os.Looper.loop(Looper.java: 123)
    at android.app.ActivityThread.main(Activity.Thread.java: 4627)
    at java.lan.reflect.Mehtod.invokeNative(Native Method)
    at java.lan.reflect.Method.invoke(Method.java:521)


    Rest ist glaub ich unwichtig

    Die Exception tritt direkt auf, wenn auf den Button in der FirstActivity gedrückt wird.
     
  4. Mss, 20.02.2011 #4
    Mss

    Mss Android-Hilfe.de Mitglied

    at [...].onClick(...) ist wichtig, welche Zeile wird da in den Klammern angezeigt?;)
     
  5. Gingerbread, 20.02.2011 #5
    Gingerbread

    Gingerbread Threadstarter Android-Hilfe.de Mitglied

    Da steht dann onClick(FirstActivity.java: 29)
    Jedoch befindet sich in Zeile 29 der FirstActivity gar kein Coder mehr.

    Edit: Habe vergessen die Imports mitzuzählen. Ich glaube es handelt sich um folgende Zeile:

    ArchiveGroup.group.setContentView(view);
     
    Zuletzt bearbeitet: 20.02.2011
  6. Mss, 21.02.2011 #6
    Mss

    Mss Android-Hilfe.de Mitglied

    Lass dir doch die Zeilen Nr in Eclipse anzeigen.
    Window -> Preferences -> General -> Editors -> Text Editors Häkchen bei "Show line number" setzen.:winki:

    Welche Zeile ist nun 29?
     
  7. Gingerbread, 21.02.2011 #7
    Gingerbread

    Gingerbread Threadstarter Android-Hilfe.de Mitglied

    Also es handelt sich um folgende Zeile:

    Code:
    View view = ArchiveGroup.group.getLocalActivityManager().startActivity("Show", i).getDecorView();
     
  8. Mss, 21.02.2011 #8
    Mss

    Mss Android-Hilfe.de Mitglied

    Wie schon vermutet, liegt es daran, dass der Zugriff auf group in OnClick die NullPointerException auslöst, da noch group zu diesem Zeitpunkt noch keine Instanz zugewiesen ist. Dies geschieht erst bei startActivity().

    Teste mal

    Code:
    View view = getLocalActivityManager().startActivity("Show", i).getDecorView();
     
  9. Gingerbread, 21.02.2011 #9
    Gingerbread

    Gingerbread Threadstarter Android-Hilfe.de Mitglied

    Wenn ich das einfach
    View view = ArchiveGroup.group.getLocalActivityManager().startActivity("Show", i).getDecorView();

    durch
    Code:
    View view = getLocalActivityManager().startActivity("Show", i).getDecorView(); 
    ersetze bekomme ich eine Fehlermeldung von Eclipse, dass ich die Methoe getLocalActivityManger() erst erstellen sollte.
     
  10. Mss

    Mss Android-Hilfe.de Mitglied

    Sry, ich meinte:
    Code:
    View view = ArchiveGroup.getLocalActivityManager().startActivity("Show", i).getDecorView();
    
     
  11. Gingerbread, 22.02.2011 #11
    Gingerbread

    Gingerbread Threadstarter Android-Hilfe.de Mitglied

    bekomme jetzt eben die Fehlermeldung, dass getLocalActivityManager() keine statische Methode sei.
    cannot make a static reference to the non-static method getLocalActivityManager() from the type ArchiveGroup
     
  12. Gingerbread, 22.02.2011 #12
    Gingerbread

    Gingerbread Threadstarter Android-Hilfe.de Mitglied

    Wie löst ihr denn das Problem, im TabHost die obere Tableiste noch zu behalten, wenn ihr ein neues Activity öffnen wollt?
     
  13. Gingerbread, 23.02.2011 #13
    Gingerbread

    Gingerbread Threadstarter Android-Hilfe.de Mitglied

    Habe hier mal ne generelle Verständnisfrage:
    (Habe mich am Beispiel von http://united-coders.com/nico-heid/...oup-within-tabhost-to-show-different-activity orientiert)

    Also ich habe eine Activity Tabhost
    Hier definiere ich die einzelnen Tabs die haben möchte.

    Dann wird z.B. auf ArchiveGroup.class weitergeleitet:
    Was passiert dann hier genau?

    ArchiveActivity
    Ist dies dann einfach die Zweite Activity, die dargestellt werden soll?
     
  14. Gingerbread, 23.02.2011 #14
    Gingerbread

    Gingerbread Threadstarter Android-Hilfe.de Mitglied

    Ich habe es jetzt nochmal wie auf
    Android: TabActivity Nested Activities | Henrik Larsen Toft
    gemacht. Und ich bekomme schon wieder eine NullPointerException an der gleichen Stelle. Hier der Code:

    Die FirstGroup.class
    Code:
    public class FirstGroup extends ActivityGroup {
    
    	public static FirstGroup group;
    	
    	private ArrayList<View> history;
    	
    	@Override
        protected void onCreate(Bundle savedInstanceState){
    		super.onCreate(savedInstanceState);
    		this.history = new ArrayList<View>();
    		group = this;
    		
    		
    		View view = getLocalActivityManager().startActivity("CitiesActivity", new  
                    Intent(this,CitiesActivity.class)  
                    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))  
                    .getDecorView();  
    		replaceView(view);  
    		
    	}
    	
    	public void replaceView(View v) {  
            // Adds the old one to history  
           history.add(v);  
            // Changes this Groups View to the new View.  
           setContentView(v);  
          }  
    	
    	public void back() {  
            if(history.size() > 0) {  
                history.remove(history.size()-1);  
                setContentView(history.get(history.size()-1));  
            }else {  
                finish();  
            }  
        }
    	
        public void onBackPressed() {  
            FirstGroup.group.back();  
            return;  
        }  
    }
    Und schließlich die CitiesActivity.class
    Code:
    public class CitiesActivity extends ActivityGroup {
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.cities);
            
            
            Button bu = (Button)findViewById(R.id.bu_1);
            bu.setOnClickListener(new OnClickListener() 
            {
    			
    			@Override
    			public void onClick(View v) 
    			{
    				// TODO Auto-generated method stub
    				Intent i = new Intent(CitiesActivity.this, ShowCities.class); 
    				
    				[COLOR="Red"]View view = FirstGroup.group.getLocalActivityManager()[/COLOR]  
    		        .startActivity("Show Cities", i  
    		        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))  
    		        .getDecorView();  
    		  
    		        // Again, replace the view  
    		        FirstGroup.group.replaceView(view);  
    			
    			}
    		}
            )
            ;
        }
        }
    Die Exception tritt wieder an gleicher Stelle auf. Woran liegt es?
     
Die Seite wird geladen...
Similar Threads Forum Datum
Schlechter bis kein Empfang mehr seit Update Samsung Allgemein Freitag um 16:42 Uhr
Anschluss an Computer nicht mehr möglich HTC Desire Forum Freitag um 17:44 Uhr
Akku lädt nicht mehr Samsung Galaxy Tab A Forum Freitag um 19:50 Uhr
Fastboot funktioniert nicht mehr Zuk Z1 Forum Samstag um 20:48 Uhr
htc one m9 Daten retten HTC One M9 Forum Sonntag um 15:10 Uhr
Samsung S6 Edge geht nicht mehr Werkstatt Samsung Sonntag um 20:38 Uhr
Le Max 2 - X829 - 6/128 GB - Nach full-wipe wird Device nicht mehr am PC erkannt. Root / Custom-ROMs / Modding für LeEco Le Max 2 Gestern um 17:53 Uhr
WLAN (und Bluetooth) nicht mehr möglich Android 6.0.x (Marshmallow) Gestern um 20:48 Uhr
XT890 Geht nicht mehr an. Motorola Razr i Forum Heute um 00:50 Uhr
Seit Android 7 bucht sich S6 nicht mehr automatisch ins Datennetz ein Android 7.x (Nougat) Heute um 05:55 Uhr