我用下面的代码创建了一个 FragmentActivity
public class Activity_principal1 extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal1);
List<Fragment> fragments = getFragments();
AcoesMuscularesAdapter ama = new AcoesMuscularesAdapter(getSupportFragmentManager(), fragments);
ViewPager vp_contentAcoesMusculares_SequenciaExercicios = (ViewPager) findViewById(R.id.vp_contentAcoesMusculares_SequenciaExercicios);
vp_contentAcoesMusculares_SequenciaExercicios.setAdapter(ama);
}
private List<Fragment> getFragments(){
List<Fragment> fList = new ArrayList<Fragment>();
fList.add(FragmentAcoesMusculares.newInstance("Fragment 1",1));
fList.add(FragmentAcoesMusculares.newInstance("Fragment 2",2));
fList.add(FragmentAcoesMusculares.newInstance("Fragment 3",3));
return fList;
}
}
这是我的 XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/framelayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white" >
<android.support.v4.view.ViewPager
android:id="@+id/vp_contentAcoesMusculares_SequenciaExercicios"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:background="#fff" />
</RelativeLayout>
FragmentAcoesMusculares(getFragments()方法内的代码)就是下面这个类
public class FragmentAcoesMusculares extends Fragment{
public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
public static final FragmentAcoesMusculares newInstance(String message,int item)
{
FragmentAcoesMusculares f = new FragmentAcoesMusculares();
Bundle bdl = new Bundle(item);
f.item = item;
bdl.putString(EXTRA_MESSAGE, message);
f.setArguments(bdl);
return f;
}
private int item;
private ImageView images;
private String urlString = "";
int i = 0;;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.linha_acoesmusculares_viewpager, container, false);
images = (ImageView) v.findViewById(R.id.images);
final Runnable r = new Runnable() {
@Override
public void run() {
if(i == 0){
urlString = "http://54.232.207.226/atlas.limittraining.com.br/thumb/grupo-muscular-sequencia/1/0/0/bb91e662b4fd6ffde74757ff9bd6e108.jpg";
}else{
urlString = "http://54.232.207.226/atlas.limittraining.com.br/thumb/grupo-muscular-sequencia/1/0/0/7730258ca72a75365d0c4b92a1a68a0a.jpg";
}
AQuery aquery = new AQuery(images);
aquery.image(urlString);
i++;
if(i >= 2){
i = 0;
}
images.postDelayed(this, 1500);
}
};
images.postDelayed(r, 1500);
return v;
}
}
这是我的适配器
public class AcoesMuscularesAdapter extends FragmentPagerAdapter{
private List<Fragment> fragments;
public AcoesMuscularesAdapter(FragmentManager fm, List<Fragment> fragments){
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
}
上面的所有代码都运行良好。
现在我正在尝试创建一个拥有我的 ViewPager 的 PopupWindow(或 DialogFragment)。
我为此修改了我的代码(现在我的 XML activity_principal1 只有一个按钮,新的 XML 弹出窗口有我的 ViewPager)
public class Activity_principal1 extends FragmentActivity {
private LayoutInflater inflater;
private View view;
private PopupWindow window;
private Button abrir;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal1);
List<Fragment> fragments = getFragments();
AcoesMuscularesAdapter ama = new AcoesMuscularesAdapter(getSupportFragmentManager(), fragments);
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.popup, null,true);
ViewPager vp_contentAcoesMusculares_SequenciaExercicios = (ViewPager) view.findViewById(R.id.vp_contentAcoesMusculares_SequenciaExercicios);
vp_contentAcoesMusculares_SequenciaExercicios.setAdapter(ama);
window = new PopupWindow(view);
abrir = (Button) findViewById(R.id.abrir);
abrir.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
window.showAsDropDown(v);
}
});
}
private List<Fragment> getFragments(){
List<Fragment> fList = new ArrayList<Fragment>();
fList.add(FragmentAcoesMusculares.newInstance("Fragment 1",1));
fList.add(FragmentAcoesMusculares.newInstance("Fragment 2",2));
fList.add(FragmentAcoesMusculares.newInstance("Fragment 3",3));
return fList;
}
}
最后,这是现在发生的错误。
10-23 12:29:39.273: E/FragmentManager(6062): No view found for id 0x7f080005 (br.com.examples.testeprojects:id/vp_contentAcoesMusculares_SequenciaExercicios) for fragment FragmentAcoesMusculares{419e41d0 #0 id=0x7f080005 android:switcher:2131230725:0}
10-23 12:29:39.273: E/FragmentManager(6062): Activity state:
10-23 12:29:39.273: D/FragmentManager(6062): Local FragmentActivity 419d8e78 State:
10-23 12:29:39.281: D/FragmentManager(6062): mCreated=truemResumed=true mStopped=false mReallyStopped=false
10-23 12:29:39.281: D/FragmentManager(6062): mLoadersStarted=true
10-23 12:29:39.281: D/FragmentManager(6062): Active Fragments in 419d9f78:
10-23 12:29:39.281: D/FragmentManager(6062): #0: FragmentAcoesMusculares{419e41d0 #0 id=0x7f080005 android:switcher:2131230725:0}
10-23 12:29:39.281: D/FragmentManager(6062): mFragmentId=#7f080005 mContainerId=#7f080005 mTag=android:switcher:2131230725:0
10-23 12:29:39.281: D/FragmentManager(6062): mState=1 mIndex=0 mWho=android:fragment:0 mBackStackNesting=0
10-23 12:29:39.281: D/FragmentManager(6062): mAdded=true mRemoving=false mResumed=false mFromLayout=false mInLayout=false
10-23 12:29:39.281: D/FragmentManager(6062): mHidden=false mDetached=false mMenuVisible=true mHasMenu=false
10-23 12:29:39.281: D/FragmentManager(6062): mRetainInstance=false mRetaining=false mUserVisibleHint=true
10-23 12:29:39.281: D/FragmentManager(6062): mFragmentManager=FragmentManager{419d9f78 in Activity_principal1{419d8e78}}
10-23 12:29:39.289: D/FragmentManager(6062): mActivity=br.com.examples.testeprojects.Activity_principal1@419d8e78
10-23 12:29:39.289: D/FragmentManager(6062): mArguments=Bundle[{EXTRA_MESSAGE=Fragment 1}]
10-23 12:29:39.289: D/FragmentManager(6062): #1: FragmentAcoesMusculares{419e4450 #1 id=0x7f080005 android:switcher:2131230725:1}
10-23 12:29:39.289: D/FragmentManager(6062): mFragmentId=#7f080005 mContainerId=#7f080005 mTag=android:switcher:2131230725:1
10-23 12:29:39.289: D/FragmentManager(6062): mState=0 mIndex=1 mWho=android:fragment:1 mBackStackNesting=0
10-23 12:29:39.289: D/FragmentManager(6062): mAdded=true mRemoving=false mResumed=false mFromLayout=false mInLayout=false
10-23 12:29:39.289: D/FragmentManager(6062): mHidden=false mDetached=false mMenuVisible=false mHasMenu=false
10-23 12:29:39.289: D/FragmentManager(6062): mRetainInstance=false mRetaining=false mUserVisibleHint=false
10-23 12:29:39.296: D/FragmentManager(6062): mFragmentManager=FragmentManager{419d9f78 in Activity_principal1{419d8e78}}
10-23 12:29:39.296: D/FragmentManager(6062): mArguments=Bundle[{EXTRA_MESSAGE=Fragment 2}]
10-23 12:29:39.296: D/FragmentManager(6062): Added Fragments:
10-23 12:29:39.296: D/FragmentManager(6062): #0: FragmentAcoesMusculares{419e41d0 #0 id=0x7f080005 android:switcher:2131230725:0}
10-23 12:29:39.296: D/FragmentManager(6062): #1: FragmentAcoesMusculares{419e4450 #1 id=0x7f080005 android:switcher:2131230725:1}
10-23 12:29:39.296: D/FragmentManager(6062): FragmentManager misc state:
10-23 12:29:39.296: D/FragmentManager(6062): mActivity=br.com.examples.testeprojects.Activity_principal1@419d8e78
10-23 12:29:39.296: D/FragmentManager(6062): mContainer=android.support.v4.app.FragmentActivity$2@419da8d0
10-23 12:29:39.296: D/FragmentManager(6062): mCurState=5 mStateSaved=false mDestroyed=false
10-23 12:29:39.296: D/FragmentManager(6062): View Hierarchy:
10-23 12:29:39.296: D/FragmentManager(6062): com.android.internal.policy.impl.PhoneWindow$DecorView{419db990 V.E..... ... 0,0-600,976}
10-23 12:29:39.296: D/FragmentManager(6062): android.widget.LinearLayout{419dd410 V.E..... ... 0,0-600,976}
10-23 12:29:39.296: D/FragmentManager(6062): android.view.ViewStub{419de850 G.E..... ... 0,0-0,0 #10203e5}
10-23 12:29:39.304: D/FragmentManager(6062): android.widget.FrameLayout{419dec20 V.E..... ... 0,0-600,976 #1020002 android:id/content}
10-23 12:29:39.304: D/FragmentManager(6062): android.widget.RelativeLayout{419dfe98 V.E..... ... 0,0-600,976 #7f080000 app:id/framelayout}
10-23 12:29:39.304: D/FragmentManager(6062): android.widget.Button{419e0618 VFED..C. ... 0,0-73,48 #7f080002 app:id/abrir}
10-23 12:29:39.304: W/System.err(6062): java.lang.IllegalArgumentException: No view found for id 0x7f080005 (br.com.examples.testeprojects:id/vp_contentAcoesMusculares_SequenciaExercicios) for fragment FragmentAcoesMusculares{419e41d0 #0 id=0x7f080005 android:switcher:2131230725:0}
10-23 12:29:39.304: W/System.err(6062): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:919)
10-23 12:29:39.304: W/System.err(6062): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
10-23 12:29:39.304: W/System.err(6062): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
10-23 12:29:39.304: W/System.err(6062): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
10-23 12:29:39.304: W/System.err(6062): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
10-23 12:29:39.312: W/System.err(6062): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
10-23 12:29:39.312: W/System.err(6062): at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
10-23 12:29:39.312: W/System.err(6062): at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
10-23 12:29:39.312: W/System.err(6062): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
10-23 12:29:39.312: W/System.err(6062): at android.view.View.measure(View.java:15479)
10-23 12:29:39.312: W/System.err(6062): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617)
10-23 12:29:39.312: W/System.err(6062): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399)
10-23 12:29:39.312: W/System.err(6062): at android.view.View.measure(View.java:15479)
10-23 12:29:39.312: W/System.err(6062): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1968)
10-23 12:29:39.312: W/System.err(6062): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1214)
10-23 12:29:39.312: W/System.err(6062): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1387)
10-23 12:29:39.312: W/System.err(6062): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
10-23 12:29:39.312: W/System.err(6062): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4464)
10-23 12:29:39.312: W/System.err(6062): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
10-23 12:29:39.320: W/System.err(6062): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
10-23 12:29:39.320: W/System.err(6062): at android.view.Choreographer.doFrame(Choreographer.java:525)
10-23 12:29:39.320: W/System.err(6062): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
10-23 12:29:39.320: W/System.err(6062): at android.os.Handler.handleCallback(Handler.java:615)
10-23 12:29:39.320: W/System.err(6062): at android.os.Handler.dispatchMessage(Handler.java:92)
10-23 12:29:39.320: W/System.err(6062): at android.os.Looper.loop(Looper.java:137)
10-23 12:29:39.320: W/System.err(6062): at android.app.ActivityThread.main(ActivityThread.java:4895)
10-23 12:29:39.320: W/System.err(6062): at java.lang.reflect.Method.invokeNative(Native Method)
10-23 12:29:39.320: W/System.err(6062): at java.lang.reflect.Method.invoke(Method.java:511)
10-23 12:29:39.320: W/System.err(6062): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
10-23 12:29:39.328: W/System.err(6062): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
10-23 12:29:39.328: W/System.err(6062): at dalvik.system.NativeStart.main(Native Method)
有人知道我做错了什么吗?
谢谢并恭祝安康。