Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Android Example Code : Tabbed Activity with Different Fragments

10.01.2021 (👁9344)

Android Example Code : Tabbed Activity with Different Fragments

 

Diese Activity hat mehrere Tabs und verschiedene untergeordnete Fragment Seiten

 

 

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
tools:context=".MainActivity">

    <
androidx.viewpager.widget.ViewPager
       
android:id="@+id/view_pager"
       
android:layout_width="match_parent"
       
android:layout_height="match_parent"
       
app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <
com.google.android.material.appbar.AppBarLayout
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:theme="@style/Theme.Demo_TabbedActivity02.AppBarOverlay">

        <
TextView
           
android:id="@+id/title"
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:gravity="center"
           
android:minHeight="?actionBarSize"
           
android:padding="@dimen/appbar_padding"
           
android:text="Demo with Tabs"
           
android:textAppearance="@style/TextAppearance.Widget.AppCompat.Toolbar.Title" />

        <
com.google.android.material.tabs.TabLayout
           
android:id="@+id/tabs"
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:background="@color/black"
           
android:foregroundTint="@color/white" />

    </
com.google.android.material.appbar.AppBarLayout>


</
androidx.coordinatorlayout.widget.CoordinatorLayout>

 

 

 

 

Und mainactivity.java Code

package com.example.demo_tabbedactivity02;

import android.os.Bundle;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.tabs.TabLayout;

import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.app.AppCompatActivity;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import com.example.demo_tabbedactivity02.ui.main.SectionsPagerAdapter;

public class MainActivity extends AppCompatActivity {

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

       
SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());
       
ViewPager viewPager = findViewById(R.id.view_pager);

       
       
viewPager.setAdapter(sectionsPagerAdapter);
       
TabLayout tabs = findViewById(R.id.tabs);
       
tabs.setupWithViewPager(viewPager);

    }
}

 

 

 

 

Frament_page1.xml

 

 

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
tools:context=".Page1">

   
<!-- TODO: Update blank fragment layout -->
   
<TextView
       
android:layout_width="match_parent"
       
android:layout_height="match_parent"
       
android:text="Page1"
       
android:textSize="22sp"
       
android:background="@color/cardview_dark_background"
       
/>

</
FrameLayout>

 

 

Die verschiedenen Fragments warden geladen durch den SectionsPagerAdapter

 

Zu beachten ist hier, dass in der GetItem() Methode jeweils das passende Fragment zurückgeben wird

 

package com.example.demo_tabbedactivity02.ui.main;

import android.content.Context;

import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

import com.example.demo_tabbedactivity02.Page1;
import com.example.demo_tabbedactivity02.Page2;
import com.example.demo_tabbedactivity02.Page3;
import com.example.demo_tabbedactivity02.R;

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

   
@StringRes
   
private static final int[] TAB_TITLES = new int[]{R.string.tab_text_1, R.string.tab_text_2,R.string.tab_text_3 };
   
private final Context mContext;

   
public SectionsPagerAdapter(Context context, FragmentManager fm) {
       
super(fm);
       
mContext = context;
    }

   
@Override
   
public Fragment getItem(int position) {
       
// getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
       
switch (position) {
           
case 0:
               
return  new Page1();
           
case 1:
               
return  new Page2();
           
case 2:
               
return  new Page3();
           
default:
               
return  new PlaceholderFragment();
        }

    }

   
@Nullable
    @Override
   
public CharSequence getPageTitle(int position) {
       
return mContext.getResources().getString(TAB_TITLES[position]);
    }

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