Intents aufrufen bei meiner SwipeTabView

  • Antworten:10
Marcus Mondel
  • Forum-Beiträge: 21

05.09.2014, 14:47:02 via Website

Guten Tag, wollte fragen ob mir jemand helfen kann: Ich möchte dass sich eine neue Activity öffnet wenn der Benutzer durch meine App navigiert, zb Simmering.class. hier der quelltext

public class MainActivity extends FragmentActivity {

/**
 * The {@link android.support.v4.view.PagerAdapter} that will provide
 * fragments for each of the sections. We use a
 * {@link android.support.v4.app.FragmentPagerAdapter} derivative, which
 * will keep every loaded fragment in memory. If this becomes too memory
 * intensive, it may be best to switch to a
 * {@link android.support.v4.app.FragmentStatePagerAdapter}.
 */
SectionsPagerAdapter mSectionsPagerAdapter;

/**
 * The {@link ViewPager} that will host the section contents.
 */
ViewPager mViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Create the adapter that will return a fragment for each of the three
    // primary sections of the app.
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mSectionsPagerAdapter);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

/**
 * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
 * one of the sections/tabs/pages.
 */
public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a DummySectionFragment (defined as a static inner class
        // below) with the page number as its lone argument.
        Fragment fragment = new DummySectionFragment();
        Bundle args = new Bundle();
        args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return 4;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        Locale l = Locale.getDefault();
        switch (position) {
        case 0:
            return getString(R.string.title_section1).toUpperCase(l);
        case 1:
            return getString(R.string.title_section2).toUpperCase(l);
        case 2:
            return getString(R.string.title_section3).toUpperCase(l);
        case 3:
            return getString(R.string.title_section4).toUpperCase(l);
        }
        return null;
    }
}

/**
 * A dummy fragment representing a section of the app, but that simply
 * displays dummy text.
 */
public static class DummySectionFragment extends Fragment {
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    public static final String ARG_SECTION_NUMBER = "section_number";

    public DummySectionFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main_dummy, container, false);
        TextView dummyTextView = (TextView) rootView.findViewById(R.id.section_label);
        dummyTextView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));
        return rootView;
    }
}

}

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.09.2014, 14:51:03 via Website

Über was soll den navigiert werden.
Bzw. wie soll der User das können?
Eine genauere Beschreibung bitte.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Marcus Mondel
  • Forum-Beiträge: 21

05.09.2014, 15:03:09 via Website

der user soll das können indem er swipes durchführt, ich schaffe es aber nur dass er die indexzahl anzeigt. ich hätte aber gerne dass er eine neue activity aufruft. anbei ein foto zur verdeutlichung:image

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.09.2014, 15:08:35 via Website

Das macht man nicht mit Activities sondern mit Fragments.
Du hast eine Activity, deine Main, diese verwaltet alle Fragments die in der Switpeview angezeigt werden.
Für die Views nach dem wischen musst du je eine Klasse erstellen, die Fragment implementiert.
Darin legst du dass das Design und so Fest.
In deiner main muss du dann nur noch das jeweilige Fragmnet starten, wenn es vom user angefordert wird.
Hier ist noch ein Tutorial dazu:
http://architects.dzone.com/articles/android-tutorial-using

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Marcus Mondel
  • Forum-Beiträge: 21

05.09.2014, 15:12:05 via Website

könntest du mir vielleicht ein bisschen helfen und zeigen wie ich so ein fragment aufrufen lassen kann? ein beispiel oder so, ich verstehe nicht ganz wie ich content in diese fragments bekomme, noch wie ich sie aufrufen kann. wäre echt super !

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.09.2014, 15:18:43 via Website

Ich ahbe dir doch schon ein tut gepostet.
So schnell kannst du das doch noch garnet durchgelesen haben.
Falls dann etwas unklar ist kannst du gerne Fragen

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Marcus Mondel
  • Forum-Beiträge: 21

05.09.2014, 15:44:17 via Website

ich habs mir durchgelesen aber ich verstehe nicht ganz wie ich jetzt einzelne "seiten" erstellen kann und diese einfüge. ich kenne das bisher nur über activites und intents. vielleicht finde ich ja noch videotutorials

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.09.2014, 16:06:36 via Website

Wie sieht denn deine Manager (Main ) Activity aus?
Vlt kann ich es dir verständlich erklären

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Marcus Mondel
  • Forum-Beiträge: 21

05.09.2014, 16:20:54 via Website

die main activity siehst du in meinem ursprungspost.

Antworten
Gelöschter Account
  • Forum-Beiträge: 336

05.09.2014, 16:34:04 via App

kuck mal hier: #30 Android Swipe Tabs Part 1: Android Tutorial F…: http://youtu.be/-2UZDrYNsX4

Android Developer

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.09.2014, 16:42:27 via Website

Ok also dann:

Der Viewpager Verwendet Fragments zu anzegen des Layoutes.
In diesen einzelnen Fragments sind dann auchdie Logik, z.b. OnClickListener etc. der jeweiligen seite enthalten.

Deine Mainactivity managed die ganzen Fragments und sorgt dafür, dass sie in der Richtigen Reihenfolge etc. angeeigt werden.

  @Override
public Fragment getItem(int position) { //Das ist die Methode, indem du festlegst, wann wleches Fragment angezeit werden sol
    // getItem is called to instantiate the fragment for the given page.
    // Return a DummySectionFragment (defined as a static inner class
    // below) with the page number as its lone argument.

//Normalerweise macht man hier ein switch(id) {...} rein um dann zwischen den Postitionen zu interscheiden:

switch(position)
{
case:
return new DummySectionFragment();;

case 1: return new DummySectionFragment1();

case 2: return new DummySectionFragment2();
}

So würde die App je nach Pos ein anderes Fragment anzeigen.

Jetzt zu den Fragments selber:
Das Fragment ist dann die eigentliche "seite" wie du sien nennst.
Also hier kann dan das Layout festgelegt werden und texteingabe und ausgabefelder angelegt und ausgewertet geben.

Eigentlich macht das Fragment nix anderes als die aktivity auch.
Nur es gibt Unterscheide.
Im Fragment gibt es keine onCreate sondern onCreateView die mit der nomalen onCreate fals gleichzusetzen ist (vom Lifecycle)

   @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //Festelgen des Layouts
    View rootView = inflater.inflate(R.layout.fragment_main_dummy, container, false); //Fragment dummy ist dein XML Layout für dieses Fragment
    TextView dummyTextView = (TextView) rootView.findViewById(R.id.section_label); //So greifst du auf elemente im Layout zu
    dummyTextView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));
    return rootView; //View wird zum anzeigen an die Activity zurückgegeben
}

Also wenn du jetzt mehrere FragmentKlassen (andere Layouts) erstellst und diese dann im switch der Activiy diese einträgst solltest du eine Veränderung bemerken.

Sind denn jetzt noch fragen offen?

Alles zum Fragment kann ich nun auch nicht erklären, da es zu umfangreich ist.
Aber wenn du mich verstanden hast, kennst du die grundlagen.
Sonst einfach nochmal Fragen :)

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten