Der Inhalt dieses Artikels wurde in der folgenden Umgebung überprüft.
Eine Ansicht, die mit Fragment als Seite gewechselt werden kann. ViewPager sollte wie ListView in Kombination mit Adapter verwendet werden.
In einer Ansicht, die diese Ansicht erbt, können Sie auch über den Bildschirm wischen, um Seiten und Registerkarten zu wechseln. Dieses Mal werde ich die grundlegende Verwendung von ViewPager erläutern.
Eine App, mit der Sie durch Wischen zwischen Selbsteinführungsseiten wechseln können
Dateiname | Erläuterung |
---|---|
MainActivity.java activity_main.xml |
ViewPager-Bildschirmlayout mit Ansichten und Schaltflächen sowie deren Aktivität |
NameFragment.java fragment_name.xml |
Layout der ersten Seite und ihres Fragments (Namensseite) |
AgeFragment.java fragment_age.xml |
Layout der zweiten Seite und ihres Fragments (Altersseite) |
FoodFragment.java fragment_food.xml |
Layout der 3. Seite und ihres Fragments (Seite des Lieblingsessens) |
UserInfoViewPagerAdapter.java | Adapter, der Fragment beim Wischen erzeugt |
Der Code für die Namensseite sieht folgendermaßen aus:
fragment_name.xml
<LinearLayout 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"
android:orientation="vertical"
tools:context="jp.co.casareal.sample.viewpagersample.fragment.NameFragment">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Die erste Seite"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Der Name ist Casa Real Taro."
android:textSize="20sp" />
</LinearLayout>
NameFragment.java
package jp.co.casareal.sample.viewpagersample.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import jp.co.casareal.sample.viewpagersample.R;
/**
* A simple {@link Fragment} subclass.
*/
public class NameFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_name, container, false);
}
}
Es gibt zwei Arten von Adaptern. "FragmentPagerAdapter" und "FragmentStatePagerAdapter". Da jede Operation anders ist, muss sie entsprechend der zu erstellenden Anwendung ausgewählt werden. Wenn die Seite gewechselt wird, behält "FragmentPagerAdapter" das angezeigte Fragment im Speicher. "FragmentStatePagerAdapter" verwirft Fragment, wenn die Seite gewechselt wird. Da die Anzahl der Seiten diesmal gering ist, habe ich "FragmentPagerAdapter" verwendet.
UserInfoViewPagerAdapter.java
package jp.co.casareal.sample.viewpagersample.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import jp.co.casareal.sample.viewpagersample.fragment.AgeFragment;
import jp.co.casareal.sample.viewpagersample.fragment.FoodFragment;
import jp.co.casareal.sample.viewpagersample.fragment.NameFragment;
/**
* Created by naoi on 2017/04/24.
*/
public class UserInfoViewPagerAdapter extends FragmentPagerAdapter {
private static final int PAGE_NUM = 3;
public UserInfoViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position){
case 0:
fragment = new NameFragment();
break;
case 1:
fragment = new AgeFragment();
break;
default:
fragment = new FoodFragment();
}
return fragment;
}
@Override
public int getCount() {
return PAGE_NUM;
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context="jp.co.casareal.sample.viewpagersample.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:onClick="onClickGoToTop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Zur ersten Seite"/>
<Button
android:onClick="onClickNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="zur nächsten Seite"/>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Der Punkt hier ist, dass, wenn Sie die Seite mit Java-Quellcode ändern möchten, Sie sie mit der setCurrentItem () -Methode von Adapter ändern können.
MainActivity.java
package jp.co.casareal.sample.viewpagersample;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import jp.co.casareal.sample.viewpagersample.adapter.UserInfoViewPagerAdapter;
public class MainActivity extends AppCompatActivity {
private ViewPager pager;
private FragmentPagerAdapter adapter;
private int currentPage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager = (ViewPager) findViewById(R.id.pager);
adapter = new UserInfoViewPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
currentPage = 0;
}
public void onClickNext(View view) {
currentPage ++;
pager.setCurrentItem(currentPage);
}
public void onClickGoToTop(View view) {
currentPage = 0;
pager.setCurrentItem(currentPage);
}
}
https://developer.android.com/reference/android/support/v13/app/FragmentPagerAdapter.html
https://developer.android.com/training/implementing-navigation/lateral.html
Recommended Posts