回答:OKE從這裏的主人那裏得到很大的幫助uDevel說服我說我的方式錯了。我發現,救了我的屁股,我花了大約10來獲得我的屎就聚集了類似的問題...... 在這裏你去:How to implement a ViewPager with different Fragments/Layouts連接到活動的多個碎片存在的問題
問題:
我知道有這裏有一些關於碎片的問題,但我沒有在那裏找到我的答案。
我想連接三個片段到CalendarActivity。我認爲最好在代碼中解釋。
我得到的錯誤是:http://postimg.org/image/aca9ndfdb/ 我已經嘗試了許多不同的進口,但我不能像如何實現此所以希望得到一些幫助。 如果我刪除android.app當我創建一個fragmentMananger/fragmentTransaction我得到:http://postimg.org/image/dy2av2zp9/
這裏是CalendarActicity
package ru.calendar;
import android.app.ActionBar;
import android.app.ActionBar.TabListener;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import jBerry.MySugar.R;
public class CalendarActivity extends FragmentActivity implements TabListener {
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.activity_calendar);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
FragmentA frag = new FragmentA();
fragmentTransaction.replace(android.R.id.content, frag);
fragmentTransaction.commit();
ActionBar actionBar;
ViewPager viewPager;
viewPager = (ViewPager) findViewById(R.id.calendarContainer);
viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
actionBar.setSelectedNavigationItem(arg0);
// Intent intent = new Intent(this, CalendarActivity.class);
// startActivity(intent);
Log.d("DpoiNT", "onPageSelected at " + " position " + arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// Log.d("DpoiNT", "onPageScrolled at "+" position " +arg0+" from " +arg1+" with number of pixels "+arg2);
}
@Override
public void onPageScrollStateChanged(int arg0) {
if(arg0== ViewPager.SCROLL_STATE_IDLE){
Log.d("DpoiNT", "onPageScrollStateChanged Idle");
}
if(arg0== ViewPager.SCROLL_STATE_DRAGGING){
Log.d("DpoiNT", "onPageScrollStateChanged Dragging");
}
if(arg0== ViewPager.SCROLL_STATE_SETTLING){
Log.d("DpoiNT", "onPageScrollStateChanged Settling");
}
}
});
actionBar = getActionBar();
assert actionBar != null;
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tab1=actionBar.newTab();
tab1.setText("Tab 1");
tab1.setTabListener(this);
ActionBar.Tab tab2=actionBar.newTab();
tab2.setText("Tab 2");
tab2.setTabListener(this);
ActionBar.Tab tab3=actionBar.newTab();
tab3.setText("Tab 3");
tab3.setTabListener(this);
actionBar.addTab(tab1);
actionBar.addTab(tab2);
actionBar.addTab(tab3);
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
// Log.d("DpoiNT", "onTabSelected at "+" position " +tab.getPosition()+" name "+tab.getText());
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
// Log.d("DpoiNT", "onTabUnselected at "+" position " +tab.getPosition()+" name "+tab.getText());
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
// Log.d("DpoiNT", "onTabReselected at "+" position "+tab.getPosition()+" name "+tab.getText());
}
}
class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
Fragment fragment=null;
if(arg0 == 0) {
fragment = new FragmentA();
}
if(arg0 == 1) {
fragment = new FragmentB();
}
if(arg0 == 2) {
fragment = new FragmentC();
}
return fragment;
}
@Override
public int getCount() {
return 3;
}
}
這裏是CalendarActivity(activity_calendar)的XML:
<android.support.v4.view.ViewPager
<!-- ViewPager for swipe function in CalendarActivity -->
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="ru.calendar.CalendarActivity"
android:id="@+id/calendarContainer">
<fragment
android:id="@+id/fragment_a"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="#ffffff"
class="ru.calendar.FragmentA" />
<fragment
android:id="@+id/fragment_b"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent"
class="ru.calendar.FragmentB" />
<fragment
android:id="@+id/fragment_c"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent"
class="ru.calendar.FragmentC" />
</android.support.v4.view.ViewPager>
這就是一個fragment.xml的樣子:
public class FragmentA extends Fragment {
public FragmentA() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_a, container, false);
}
}
編輯這低於CalendarActivity的一部分...
viewPager = (ViewPager) findViewById(R.id.calendarContainer);
viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
actionBar.setSelectedNavigationItem(arg0);
// Intent intent = new Intent(this, CalendarActivity.class);
// startActivity(intent);
Log.d("DpoiNT", "onPageSelected at " + " position " + arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// Log.d("DpoiNT", "onPageScrolled at "+" position " +arg0+" from " +arg1+" with number of pixels "+arg2);
}
@Override
public void onPageScrollStateChanged(int arg0) {
if(arg0== ViewPager.SCROLL_STATE_IDLE){
Log.d("DpoiNT", "onPageScrollStateChanged Idle");
}
if(arg0== ViewPager.SCROLL_STATE_DRAGGING){
Log.d("DpoiNT", "onPageScrollStateChanged Dragging");
}
if(arg0== ViewPager.SCROLL_STATE_SETTLING){
Log.d("DpoiNT", "onPageScrollStateChanged Settling");
}
}
});
class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
Fragment fragment=null;
if(arg0 == 0) {
fragment = new FragmentA();
}
if(arg0 == 1) {
fragment = new FragmentB();
}
if(arg0 == 2) {
fragment = new FragmentC();
}
return fragment;
}
@Override
public int getCount() {
return 3;
}
}
這不是你如何查看帶有片段的尋呼機。 – uDevel