Layout Einbindung

  • 10 Antworten
  • Letztes Antwortdatum
M

m4libu

Neues Mitglied
0
Hallo zusammen,
für euch wohl ein Kinderspiel, ich schaffs aber nicht..

Ich hab oben 3 Tabs mit denen ich 3 Layouts anzeige.
auf einem der Tabs spring ich aber auf ein Layout ab das nicht in den Tabs ist.
Jetzt bekomme ich die Seite angezeigt, aber nicht unter den 3 Tabs sondern als freistehende Seite.

Was muss ich denn da ändern damit das funktioniert?
 
Etwas Source wäre schon ganz gut.
Vermutlich hast du das Tab einfach falsch zugewiesen.

Schau halt, wie du die ersten beiden zugewiesen hast und mach es ebenso für den nicht funktionierenden.

Gruß
Chris
 
das mit den Tabs klappt soweit, ich hab nur noch eine extra seite.

ich hab also 3 tabs und 4 seiten, wobei die 4. seite vond er 3. aufgerufen wird. Dann entsteht aber der neue Screen.

was bräuchstest du denn für einen code? von der Main class wo die tabs hängen?
 
Was heißt denn bei dir "Seite"? Etwa ein xml-File?
Dann hättest du also 3 Tabs und 4 xml-Files?

dann könntest du 2 sachen machen.
1. via <include android:id="@+id/xx" layout="@layout/xy" /> dein layout in das schon bestehende xml einbinden und nur über setVisibility() anzeigen bzw. wieder verstecken.
2. oder du sagt in deinem Code iwann später im 3 Tab setContentView(R.layout.xy) [so wie hier https://www.android-hilfe.de/forum/...geht-jedoch-nicht-ein-zweites-mal.364479.html]

Gruß
 
Zuletzt bearbeitet:
Ja, ich mein damit ein xml file :)
komme aus der php entwicklung und bin noch nicht so auf xmls ;)

das xml das ich einbinden möchte hat eine eigene klasse.

das aufrufende xml auch:

Code:
public class LoginActivity extends Activity {
      
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setting default screen to login_layout.xml
        setContentView(R.layout.login_layout);
 
        TextView registerScreen = (TextView) findViewById(R.id.link_to_register);
 
        // Listening to register new account link
        registerScreen.setOnClickListener(new View.OnClickListener() {
 
            public void onClick(View v) {
                // Switching to Register screen
                Intent i = new Intent(getApplicationContext(), RegisterActivity.class);
                startActivity(i);
            }
        });
    }
}

aufgerufenes xml
Code:
public class RegisterActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Set View to register.xml
        setContentView(R.layout.register_layout);
 
        TextView loginScreen = (TextView) findViewById(R.id.link_to_login);
 
        // Listening to Login Screen link
        loginScreen.setOnClickListener(new View.OnClickListener() {
 
            public void onClick(View arg0) {
                                // Closing registration screen
                // Switching to Login Screen/closing register screen
                finish();
            }
        });
    }
}

und hier noch die Main
Code:
public class MainActivity extends TabActivity {

    /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            TabHost tabHost = getTabHost();
     
            // Tab for Photos
            TabSpec searchspec = tabHost.newTabSpec("Search");
            // setting Title and Icon for the Tab
            searchspec.setIndicator("Suche", getResources().getDrawable(R.drawable.icon_search_tab));
            Intent searchIntent = new Intent(this, SearchActivity.class);
            searchspec.setContent(searchIntent);
     
            // Tab for Songs
            TabSpec ratespec = tabHost.newTabSpec("Rate");
            ratespec.setIndicator("Bewerten", getResources().getDrawable(R.drawable.icon_rate_tab));
            Intent rateIntent = new Intent(this, RateActivity.class);
            ratespec.setContent(rateIntent);
     
            // Tab for Videos
            TabSpec loginspec = tabHost.newTabSpec("Login");
            loginspec.setIndicator("Login", getResources().getDrawable(R.drawable.icon_login_tab));
            Intent loginIntent = new Intent(this, LoginActivity.class);
            loginspec.setContent(loginIntent);
     
            // Adding all TabSpec to TabHost
            tabHost.addTab(searchspec); // Adding Search tab
            tabHost.addTab(ratespec); // Adding Rate tab
            tabHost.addTab(loginspec); // Adding Login tab
        }
    }


vielleicht hilfts ja :)
ich denk ich sollte möglichkeit 2 machen, also über den setContentView.
habs mal in der register (aufzurufende) eingefügt aber da klappts auch nicht wirklich..
 
Ok super danke. Werds später mal versuchen.

wie machst du dann sowas?
selbst "zeichnen" ?
 
das ganze innerhalb des tabhosts zu machen ist aber nicht wirklich android-haft.

wie du siehst, erfordert das zusätzlichen aufwand. dann musst auch noch beachten, dass du den back button korrekt behandelst. Wenn der User nun im 3. Tab reinklickt und da das layout gewechselt wird, muss beim back button ja nur das layout zurück gewechselt werden.

das erfordert einiges an eigenen implementationen und somit auch fehleranfälligkeit.


wenn der user in einem tabhost irgendwo was neues anklickt, sollte doch eine neue activity aufgehen und dann dort weiter gearbeitet werden. Vor allem ein login oder register würde doch genau in eine neue activity auslagern, da es ja auch ein neue aufgabe ist.

du machst es dir so irgendwie nur unnötig schwer. und es sollte kein grund sein es so zu machen, nur weil es apps am iphone auch so machen.
 
ahja..
hab nur ein tutorial durchgemacht und wollte das jetzt mit einbinden.

wie ist denn dann das normale vorgehen?

danke
 
ja wie ich es doch beschrieben habe.

jeder deiner tabs wird eine aufgabe haben. alles was darüber hinaus geht, wird in eigenen activities behandelt.
 
deie lösung wäre also ein 4. tab für die registrierung ?
 
Zurück
Oben Unten