Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android WindowManager添加的视图上的ViewPager获取;java.lang.IllegalArgumentException:找不到id“的视图;_Android_Android Fragments_Android Viewpager_Android Windowmanager_Android Photos - Fatal编程技术网

Android WindowManager添加的视图上的ViewPager获取;java.lang.IllegalArgumentException:找不到id“的视图;

Android WindowManager添加的视图上的ViewPager获取;java.lang.IllegalArgumentException:找不到id“的视图;,android,android-fragments,android-viewpager,android-windowmanager,android-photos,Android,Android Fragments,Android Viewpager,Android Windowmanager,Android Photos,我正在实现一个照片查看器,它允许用户从缩略图以全屏模式查看照片。 我目前的做法是将膨胀视图添加到WindowManager。在充气视图中,有一个ViewPager允许用户切换图像。我得到了错误“java.lang.IllegalArgumentException:找不到id的视图” 以下是详细信息(视图在setActivity方法中膨胀,在openPhoto方法中为viewPager设置适配器): 这里调用了PhotoViewer的方法: public class PhotosFragment

我正在实现一个照片查看器,它允许用户从缩略图以全屏模式查看照片。 我目前的做法是将膨胀视图添加到
WindowManager
。在充气视图中,有一个
ViewPager
允许用户切换图像。我得到了错误“java.lang.IllegalArgumentException:找不到id的视图”

以下是详细信息(视图在setActivity方法中膨胀,在openPhoto方法中为viewPager设置适配器):

这里调用了PhotoViewer的方法:

public class PhotosFragment  extends Fragment implements PhotoSupporter{
/*
....
*/


@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    showLoading();
    photosGridview = (GridView) findViewById(R.id.group_photos_gridview);
    if (listPhotos == null) {
        listPhotos = new ArrayList<Photo>();

    }
    photoListAdapter = new PhotoListAdapter(listPhotos, getActivity());
    photosGridview.setAdapter(photoListAdapter);
    photosGridview.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            PhotoViewer.getInstance().setParentActivity(getActivity());
            PhotoViewer.getInstance().openPhoto(PhotosFragment.this, position);
        }
    });
}



@Override
public int getSize() {
    return listPhotos == null ? 0 : listPhotos.size();
}

@Override
public Photo getPhotoItem(int position) {
    return listPhotos.get(position);
}
}

这个问题有什么解决办法吗?非常感谢你们

我想你只是漏掉了一个小错误。而不是这个

viewPager=(viewPager)containerView.findViewById(R.id.photo\u viewer\u view\u pager

viewPager=(viewPager)containerView.findViewById(R.id.photo\u viewer\u viewPager


我认为您对viewpager使用了错误的id。希望它能解决您的问题。

我想您只是错过了一个小错误。而不是这个

viewPager=(viewPager)containerView.findViewById(R.id.photo\u viewer\u view\u pager

viewPager=(viewPager)containerView.findViewById(R.id.photo\u viewer\u viewPager


我认为您对viewpager使用了错误的id。希望它能解决您的问题。

我认为您在findviewById()之后在setParenActivity()中膨胀视图,这就是它无法获取视图的原因。

我认为您在findviewById()之后在setParenActivity()中膨胀视图这就是它无法获取视图的原因。

我认为这是因为您直接通过WindowManager添加了ViewPager。这样做意味着它将不属于正常活动视图层次结构的一部分(即装饰视图的子视图)<代码>活动。findViewById(以装饰视图作为根视图遍历视图)将无法找到您的ViewPager

ViewPager适配器创建片段并使用ViewPager(id)作为容器。创建片段时,Android通过
Activity.findViewById
查找此容器,但无法找到它,因此引发此异常


听起来好像您需要某种显示在缩略图网格顶部的视图。您可以使用一个对话框(片段)来实现这一点。实现该视图的细节最好作为一个单独的问题提出。

我认为这是因为您直接通过WindowManager添加ViewPager。这样做意味着它将不属于正常活动视图层次结构的一部分(即装饰视图的子视图)<代码>活动。findViewById(以装饰视图作为根视图遍历视图)将无法找到您的ViewPager

ViewPager适配器创建片段并使用ViewPager(id)作为容器。创建片段时,Android通过
Activity.findViewById
查找此容器,但无法找到它,因此引发此异常


听起来好像您需要某种显示在缩略图网格顶部的视图。您可以使用一个对话框(片段)来实现这一点。实现该视图的具体细节最好作为一个单独的问题提出。

发布logcat结果和问题@ρ∑ѕρєK你能看一下更新的问题吗?发布logcat结果和问题@ρ∑ѕρєK你能看一下更新的问题吗?对不起,这是我在StackOverFlow上的打字错误。你能看一下更新的问题吗?对不起,这是我在StackOverFlow上的打字错误。你能看一下更新的问题吗?不,我根本没有使用findViewById。不,我根本没有使用findViewById。我在深入android源代码后也发现了这一点。谢谢。嗨@antonyt,我刚根据您的建议更改了我的实现,但我遇到了一个非常棘手的问题。你能看一下吗:我在钻研安卓源码后也发现了。谢谢。嗨@antonyt,我刚根据您的建议更改了我的实现,但我遇到了一个非常棘手的问题。请你看一下:
public class PhotosFragment  extends Fragment implements PhotoSupporter{
/*
....
*/


@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    showLoading();
    photosGridview = (GridView) findViewById(R.id.group_photos_gridview);
    if (listPhotos == null) {
        listPhotos = new ArrayList<Photo>();

    }
    photoListAdapter = new PhotoListAdapter(listPhotos, getActivity());
    photosGridview.setAdapter(photoListAdapter);
    photosGridview.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            PhotoViewer.getInstance().setParentActivity(getActivity());
            PhotoViewer.getInstance().openPhoto(PhotosFragment.this, position);
        }
    });
}



@Override
public int getSize() {
    return listPhotos == null ? 0 : listPhotos.size();
}

@Override
public Photo getPhotoItem(int position) {
    return listPhotos.get(position);
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<android.support.v4.view.ViewPager
    android:id="@+id/photo_viewer_view_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/dark_background" >
</android.support.v4.view.ViewPager>
01-14 14:12:55.271: E/AndroidRuntime(11435): FATAL EXCEPTION: main
01-14 14:12:55.271: E/AndroidRuntime(11435): java.lang.IllegalArgumentException: No view found for id 0x7f0b00df (com.newsfeed.android:id/photo_viewer_view_pager) for fragment PhotoViewFragment{537b5ec4 #8 id=0x7f0b00df}
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:903)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.ja va:1088)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
 01-14 14:12:55.271: E/AndroidRuntime(11435):   at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentSta tePagerAdapter.java:163)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.support.v4.view.ViewPager.populate(ViewPager.java:1064)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.support.v4.view.ViewPager.populate(ViewPager.java:911)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1432)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.View.measure(View.java:15172)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.View.measure(View.java:15172)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at  android.view.View.measure(View.java:15172)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1848)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1100)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1273)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.Choreographer.doCallbacks(Choreographer.java:555)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.Choreographer.doFrame(Choreographer.java:525)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.os.Handler.handleCallback(Handler.java:615)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.os.Looper.loop(Looper.java:137)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at android.app.ActivityThread.main(ActivityThread.java:4745)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at java.lang.reflect.Method.invokeNative(Native Method)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at java.lang.reflect.Method.invoke(Method.java:511)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-14 14:12:55.271: E/AndroidRuntime(11435):    at dalvik.system.NativeStart.main(Native Method)